From redhatter@gentoo.org Sat Oct  1 03:56:11 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Sat, 01 Oct 2005 03:56:28 +0100 (BST)
Received: from 202-47-55-78.adsl.gil.com.au ([202.47.55.78]:49590 "EHLO
	longlandclan.hopto.org") by ftp.linux-mips.org with ESMTP
	id S3465602AbVJAC4L (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Sat, 1 Oct 2005 03:56:11 +0100
Received: (qmail 4278 invoked by uid 210); 1 Oct 2005 12:55:14 +1000
Received: from 10.0.0.251 by www (envelope-from <redhatter@gentoo.org>, uid 201) with qmail-scanner-1.25st 
 (spamassassin: 3.0.4. perlscan: 1.25st.  
 Clear:RC:1(10.0.0.251):. 
 Processed in 0.138133 secs); 01 Oct 2005 02:55:14 -0000
Received: from beast.redhatters.home (HELO ?10.0.0.251?) (10.0.0.251)
  by 192.168.5.1 with SMTP; 1 Oct 2005 12:55:13 +1000
Message-ID: <433DFA95.70705@gentoo.org>
Date:	Sat, 01 Oct 2005 12:55:17 +1000
From:	Stuart Longland <redhatter@gentoo.org>
Organization: Gentoo Foundation
User-Agent: Mozilla Thunderbird 1.0.6 (X11/20050716)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	oski <oski2001@hotmail.com>
CC:	linux-mips@linux-mips.org
Subject: Re: Compiling a kernel for ibm z50
References: <BAY101-DAV76EF721B0CFCE85875AC3D28A0@phx.gbl> <20050928183731.GA18480@linux-mips.org> <433CD36E.7040807@gentoo.org> <BAY101-DAV1223E6E4198CCF9DD3D75FD28F0@phx.gbl>
In-Reply-To: <BAY101-DAV1223E6E4198CCF9DD3D75FD28F0@phx.gbl>
X-Enigmail-Version: 0.91.0.0
OpenPGP: id=63264AB9;
	url=http://dev.gentoo.org/~redhatter/gpgkey.asc
Content-Type: multipart/signed; micalg=pgp-sha1;
 protocol="application/pgp-signature";
 boundary="------------enigEB2DE53FAECC018A762F91AC"
Return-Path: <redhatter@gentoo.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9105
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: redhatter@gentoo.org
Precedence: bulk
X-list: linux-mips

This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enigEB2DE53FAECC018A762F91AC
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

oski wrote:
> Hi,
> 
> I realised something was not OK when trying to make zImage or make stripped
> i gor the warning that not rule were available. I need an small kernel able
> to boot from the msdos partition of my microdrive using hpcboot. A big
> kernel will be a waste of space in the microdrive.
> 
> Anyway after make clean I can not find vmlinux anywhere, I was expecting it
> to be in arch/mips/boot but nothing there. Any ideas?
> 
> many thanks
> 
> oski

Look in the linux/ directory, not the linux/arch/mips/boot/ directory. :-)
You know -- the one you ran `make vmlinux` in. ;-)

The latter directory is an x86-ism -- we don't do things that way on
MIPS. :-)
-- 
 ____                   _             Stuart Longland (a.k.a Redhatter)
/  _ \   ___    ___  __| |__  __   __ Gentoo Linux/MIPS Cobalt and Docs
- (_) \ /   \  ;   \(__   __)/  \ /  \                        Developer
 \    //  O _| / /\ \  | |  | /\ | /\ |
 /   / \   /__| /  \ \ | |  | \/ | \/ |
(___/   \____/|_;  |_| \_/   \__/ \__/ http://dev.gentoo.org/~redhatter

--------------enigEB2DE53FAECC018A762F91AC
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFDPfqYuarJ1mMmSrkRAnwgAJ9i+XmXTeIcncfW4j8UzyGmv/aDpACdExBm
0ZkxIc3s6NYXpT8TTdzwmOg=
=PXib
-----END PGP SIGNATURE-----

--------------enigEB2DE53FAECC018A762F91AC--

From ravdberg@inter.NL.net Sat Oct  1 14:45:31 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Sat, 01 Oct 2005 14:45:49 +0100 (BST)
Received: from vmx15.multikabel.net ([212.127.254.144]:4030 "EHLO
	vmx15.multikabel.net") by ftp.linux-mips.org with ESMTP
	id S3465581AbVJANpb (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Sat, 1 Oct 2005 14:45:31 +0100
Received: from vmx20.multikabel.net ([212.127.254.137])
	by vmx15.multikabel.net with esmtp (Exim 4.44)
	id 1ELhg8-0001Ac-Jv
	for linux-mips@linux-mips.org; Sat, 01 Oct 2005 15:45:28 +0200
Received: from whale.dutch.mountain (82-217-198-100.cable.quicknet.nl [82.217.198.100])
	by vmx20.multikabel.net (8.13.3/8.13.3) with ESMTP id j91DjL6N031835
	for <linux-mips@linux-mips.org>; Sat, 1 Oct 2005 15:45:27 +0200
Received: from (locally authorised broken client using invalid hostname!) localhost (really [127.0.0.1]) by inter.NL.net
	via in.smtpd with esmtp (ident ravdberg using rfc1413)
	id <m1ELhg2-000H4gC@whale.dutch.mountain> (Debian Smail3.2.0.114)
	Sat, 1 Oct 2005 15:45:22 +0200 (CEST) 
Date:	Sat, 1 Oct 2005 15:45:21 +0200 (CEST)
From:	Richard van den Berg <ravdberg@inter.NL.net>
X-X-Sender: ravdberg@whale.dutch.mountain
To:	linux-mips@linux-mips.org
Subject: 3 DECstations for free pickup in The Netherlands
Message-ID: <Pine.LNX.4.62.0510011541170.15124@whale.dutch.mountain>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-MultiKabel-MailScanner-Information: Please contact helpdesk@quicknet.nl for more information
X-MultiKabel-MailScanner: Found to be clean
X-MultiKabel-MailScanner-SpamCheck: not spam
X-MultiKabel-MX-MailScanner-Information: Please contact helpdesk@quicknet.nl for more information
X-MultiKabel-MX-MailScanner: Found to be clean
X-MultiKabel-MX-MailScanner-SpamCheck: 
X-MailScanner-From: ravdberg@inter.nl.net
Return-Path: <ravdberg@inter.NL.net>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9106
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ravdberg@inter.NL.net
Precedence: bulk
X-list: linux-mips

L.S.

I have 3 DECstations to give away:
1 DECstation 5000/133
2 DECstations 5000/25

Located near Alkmaar. Contact me for details if you're interested.

Regards,
Richard

From ppopov@embeddedalley.com Sat Oct  1 14:51:46 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Sat, 01 Oct 2005 14:52:01 +0100 (BST)
Received: from smtp103.biz.mail.mud.yahoo.com ([68.142.200.238]:3254 "HELO
	smtp103.biz.mail.mud.yahoo.com") by ftp.linux-mips.org with SMTP
	id S3465578AbVJANvq (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Sat, 1 Oct 2005 14:51:46 +0100
Received: (qmail 81420 invoked from network); 1 Oct 2005 13:51:39 -0000
Received: from unknown (HELO ?192.168.1.111?) (ppopov@embeddedalley.com@63.194.214.47 with plain)
  by smtp103.biz.mail.mud.yahoo.com with SMTP; 1 Oct 2005 13:51:39 -0000
Subject: free O2
From:	Pete Popov <ppopov@embeddedalley.com>
Reply-To: ppopov@embeddedalley.com
To:	"'linux-mips@linux-mips.org'" <linux-mips@linux-mips.org>
Content-Type: text/plain
Organization: Embedded Alley Solutions, Inc
Date:	Sat, 01 Oct 2005 06:51:24 -0700
Message-Id: <1128174684.25046.31.camel@localhost.localdomain>
Mime-Version: 1.0
X-Mailer: Evolution 2.0.4 (2.0.4-4) 
Content-Transfer-Encoding: 7bit
Return-Path: <ppopov@embeddedalley.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9107
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ppopov@embeddedalley.com
Precedence: bulk
X-list: linux-mips


I have one O2 to give away, including keyboard and mouse, no monitor.

Located in Santa Clara, CA, USA. Contact me if you're interested.

Pete


From yuasa@hh.iij4u.or.jp Sat Oct  1 18:32:21 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Sat, 01 Oct 2005 18:32:45 +0100 (BST)
Received: from mo01.iij4u.or.jp ([210.130.0.20]:5830 "EHLO mo01.iij4u.or.jp")
	by ftp.linux-mips.org with ESMTP id S3465605AbVJARcV (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Sat, 1 Oct 2005 18:32:21 +0100
Received: MO(mo01)id j91HWHX6022661; Sun, 2 Oct 2005 02:32:17 +0900 (JST)
Received: MDO(mdo00) id j91HWGxI007258; Sun, 2 Oct 2005 02:32:16 +0900 (JST)
Received: from stratos (h195.p501.iij4u.or.jp [210.149.245.195])
	by mbox.iij4u.or.jp (4U-MR/mbox01) id j91HWEDZ013635
	(version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=NOT);
	Sun, 2 Oct 2005 02:32:15 +0900 (JST)
Date:	Sun, 2 Oct 2005 02:32:13 +0900
From:	Yoichi Yuasa <yuasa@hh.iij4u.or.jp>
To:	Ralf Baechle <ralf@linux-mips.org>
Cc:	yuasa@hh.iij4u.or.jp, linux-mips <linux-mips@linux-mips.org>
Subject: [PATCH] vr41xx: update defconfig
Message-Id: <20051002023213.61de0f26.yuasa@hh.iij4u.or.jp>
X-Mailer: Sylpheed version 1.0.5 (GTK+ 1.2.10; i486-pc-linux-gnu)
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Return-Path: <yuasa@hh.iij4u.or.jp>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9108
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: yuasa@hh.iij4u.or.jp
Precedence: bulk
X-list: linux-mips

Hi Ralf,

I had updated vr41xx machine's defconfig.
Please apply.

Yoichi

Signed-off-by: Yoichi Yuasa <yuasa@hh.iij4u.or.jp>

diff -urN -X dontdiff a-orig/arch/mips/configs/capcella_defconfig a/arch/mips/configs/capcella_defconfig
--- a-orig/arch/mips/configs/capcella_defconfig	2005-10-01 00:31:06.000000000 +0900
+++ a/arch/mips/configs/capcella_defconfig	2005-10-02 01:10:01.000000000 +0900
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Linux kernel version: 2.6.14-rc2
-# Thu Sep 22 02:15:28 2005
+# Sun Oct  2 00:59:18 2005
 #
 CONFIG_MIPS=y
 
@@ -119,7 +119,7 @@
 # CONFIG_VICTOR_MPC30X is not set
 CONFIG_ZAO_CAPCELLA=y
 CONFIG_PCI_VR41XX=y
-CONFIG_VRC4173=y
+# CONFIG_VRC4173 is not set
 CONFIG_RWSEM_GENERIC_SPINLOCK=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
 CONFIG_DMA_NONCOHERENT=y
@@ -327,9 +327,7 @@
 # CONFIG_BLK_DEV_RAM is not set
 CONFIG_BLK_DEV_RAM_COUNT=16
 # CONFIG_LBD is not set
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+# CONFIG_CDROM_PKTCDVD is not set
 
 #
 # IO Schedulers
@@ -370,7 +368,7 @@
 #
 # SCSI device support
 #
-CONFIG_RAID_ATTRS=m
+# CONFIG_RAID_ATTRS is not set
 # CONFIG_SCSI is not set
 
 #
@@ -426,7 +424,7 @@
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
-# CONFIG_MII is not set
+CONFIG_MII=y
 # CONFIG_HAPPYMEAL is not set
 # CONFIG_SUNGEM is not set
 # CONFIG_NET_VENDOR_3COM is not set
@@ -436,7 +434,30 @@
 #
 # CONFIG_NET_TULIP is not set
 # CONFIG_HP100 is not set
-# CONFIG_NET_PCI is not set
+CONFIG_NET_PCI=y
+# CONFIG_PCNET32 is not set
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_ADAPTEC_STARFIRE is not set
+# CONFIG_B44 is not set
+# CONFIG_FORCEDETH is not set
+# CONFIG_DGRS is not set
+# CONFIG_EEPRO100 is not set
+# CONFIG_E100 is not set
+# CONFIG_FEALNX is not set
+# CONFIG_NATSEMI is not set
+# CONFIG_NE2K_PCI is not set
+# CONFIG_8139CP is not set
+CONFIG_8139TOO=y
+CONFIG_8139TOO_PIO=y
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+# CONFIG_8139TOO_8129 is not set
+# CONFIG_8139_OLD_RX_RESET is not set
+# CONFIG_SIS900 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_SUNDANCE is not set
+# CONFIG_TLAN is not set
+# CONFIG_VIA_RHINE is not set
+# CONFIG_LAN_SAA9730 is not set
 
 #
 # Ethernet (1000 Mbit)
@@ -451,6 +472,7 @@
 # CONFIG_SIS190 is not set
 # CONFIG_SKGE is not set
 # CONFIG_SK98LIN is not set
+# CONFIG_VIA_VELOCITY is not set
 # CONFIG_TIGON3 is not set
 # CONFIG_BNX2 is not set
 
@@ -504,10 +526,7 @@
 #
 # Userland interfaces
 #
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_MOUSEDEV_PSAUX=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_MOUSEDEV is not set
 # CONFIG_INPUT_JOYDEV is not set
 # CONFIG_INPUT_TSDEV is not set
 # CONFIG_INPUT_EVDEV is not set
@@ -525,12 +544,7 @@
 #
 # Hardware I/O ports
 #
-CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
-CONFIG_SERIO_SERPORT=y
-# CONFIG_SERIO_PCIPS2 is not set
-CONFIG_SERIO_LIBPS2=m
-CONFIG_SERIO_RAW=m
+# CONFIG_SERIO is not set
 # CONFIG_GAMEPORT is not set
 
 #
@@ -544,17 +558,15 @@
 #
 # Serial drivers
 #
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_NR_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
+# CONFIG_SERIAL_8250 is not set
 
 #
 # Non-8250 serial port support
 #
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_VR41XX is not set
+CONFIG_SERIAL_VR41XX=y
+CONFIG_SERIAL_VR41XX_CONSOLE=y
 # CONFIG_SERIAL_JSM is not set
 CONFIG_UNIX98_PTYS=y
 CONFIG_LEGACY_PTYS=y
@@ -568,19 +580,7 @@
 #
 # Watchdog Cards
 #
-CONFIG_WATCHDOG=y
-# CONFIG_WATCHDOG_NOWAYOUT is not set
-
-#
-# Watchdog Device Drivers
-#
-# CONFIG_SOFT_WATCHDOG is not set
-
-#
-# PCI-based Watchdog Cards
-#
-# CONFIG_PCIPCWATCHDOG is not set
-# CONFIG_WDTPCI is not set
+# CONFIG_WATCHDOG is not set
 # CONFIG_RTC is not set
 # CONFIG_GEN_RTC is not set
 # CONFIG_DTLK is not set
@@ -591,7 +591,7 @@
 # Ftape, the floppy tape device driver
 #
 # CONFIG_DRM is not set
-# CONFIG_GPIO_VR41XX is not set
+CONFIG_GPIO_VR41XX=y
 # CONFIG_RAW_DRIVER is not set
 
 #
@@ -784,7 +784,7 @@
 # CONFIG_DEBUG_KERNEL is not set
 CONFIG_LOG_BUF_SHIFT=14
 CONFIG_CROSSCOMPILE=y
-CONFIG_CMDLINE=""
+CONFIG_CMDLINE="mem=32M console=ttyVR0,38400"
 
 #
 # Security options
@@ -831,7 +831,7 @@
 #
 # CONFIG_CRC_CCITT is not set
 CONFIG_CRC16=m
-CONFIG_CRC32=m
+CONFIG_CRC32=y
 CONFIG_LIBCRC32C=m
 CONFIG_ZLIB_INFLATE=m
 CONFIG_ZLIB_DEFLATE=m
diff -urN -X dontdiff a-orig/arch/mips/configs/e55_defconfig a/arch/mips/configs/e55_defconfig
--- a-orig/arch/mips/configs/e55_defconfig	2005-10-01 00:31:16.000000000 +0900
+++ a/arch/mips/configs/e55_defconfig	2005-10-02 00:48:50.000000000 +0900
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Linux kernel version: 2.6.14-rc2
-# Thu Sep 22 02:16:01 2005
+# Sun Oct  2 00:48:30 2005
 #
 CONFIG_MIPS=y
 
@@ -315,9 +315,7 @@
 # CONFIG_BLK_DEV_RAM is not set
 CONFIG_BLK_DEV_RAM_COUNT=16
 # CONFIG_LBD is not set
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+# CONFIG_CDROM_PKTCDVD is not set
 
 #
 # IO Schedulers
@@ -326,7 +324,7 @@
 CONFIG_IOSCHED_AS=y
 CONFIG_IOSCHED_DEADLINE=y
 CONFIG_IOSCHED_CFQ=y
-CONFIG_ATA_OVER_ETH=m
+# CONFIG_ATA_OVER_ETH is not set
 
 #
 # ATA/ATAPI/MFM/RLL support
@@ -358,7 +356,7 @@
 #
 # SCSI device support
 #
-CONFIG_RAID_ATTRS=m
+# CONFIG_RAID_ATTRS is not set
 # CONFIG_SCSI is not set
 
 #
@@ -477,8 +475,8 @@
 #
 CONFIG_INPUT_MOUSEDEV=y
 CONFIG_INPUT_MOUSEDEV_PSAUX=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=320
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240
 # CONFIG_INPUT_JOYDEV is not set
 # CONFIG_INPUT_TSDEV is not set
 # CONFIG_INPUT_EVDEV is not set
@@ -497,7 +495,7 @@
 # Hardware I/O ports
 #
 CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
+# CONFIG_SERIO_I8042 is not set
 CONFIG_SERIO_SERPORT=y
 # CONFIG_SERIO_LIBPS2 is not set
 CONFIG_SERIO_RAW=m
@@ -514,17 +512,15 @@
 #
 # Serial drivers
 #
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_NR_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
+# CONFIG_SERIAL_8250 is not set
 
 #
 # Non-8250 serial port support
 #
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_VR41XX is not set
+CONFIG_SERIAL_VR41XX=y
+CONFIG_SERIAL_VR41XX_CONSOLE=y
 CONFIG_UNIX98_PTYS=y
 CONFIG_LEGACY_PTYS=y
 CONFIG_LEGACY_PTY_COUNT=256
@@ -559,7 +555,7 @@
 #
 # Ftape, the floppy tape device driver
 #
-# CONFIG_GPIO_VR41XX is not set
+CONFIG_GPIO_VR41XX=y
 # CONFIG_RAW_DRIVER is not set
 
 #
@@ -706,17 +702,17 @@
 #
 # Network File Systems
 #
-CONFIG_NFS_FS=y
+CONFIG_NFS_FS=m
 # CONFIG_NFS_V3 is not set
 # CONFIG_NFS_V4 is not set
 # CONFIG_NFS_DIRECTIO is not set
-CONFIG_NFSD=y
+CONFIG_NFSD=m
 # CONFIG_NFSD_V3 is not set
 # CONFIG_NFSD_TCP is not set
-CONFIG_LOCKD=y
-CONFIG_EXPORTFS=y
+CONFIG_LOCKD=m
+CONFIG_EXPORTFS=m
 CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=y
+CONFIG_SUNRPC=m
 # CONFIG_RPCSEC_GSS_KRB5 is not set
 # CONFIG_RPCSEC_GSS_SPKM3 is not set
 # CONFIG_SMB_FS is not set
@@ -749,7 +745,7 @@
 # CONFIG_DEBUG_KERNEL is not set
 CONFIG_LOG_BUF_SHIFT=14
 CONFIG_CROSSCOMPILE=y
-CONFIG_CMDLINE=""
+CONFIG_CMDLINE="console=ttyVR0,19200 mem=8M"
 
 #
 # Security options
diff -urN -X dontdiff a-orig/arch/mips/configs/mpc30x_defconfig a/arch/mips/configs/mpc30x_defconfig
--- a-orig/arch/mips/configs/mpc30x_defconfig	2005-10-01 00:31:23.000000000 +0900
+++ a/arch/mips/configs/mpc30x_defconfig	2005-10-02 01:17:36.000000000 +0900
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Linux kernel version: 2.6.14-rc2
-# Thu Sep 22 02:16:38 2005
+# Sun Oct  2 01:17:03 2005
 #
 CONFIG_MIPS=y
 
@@ -194,7 +194,21 @@
 #
 # PCCARD (PCMCIA/CardBus) support
 #
-# CONFIG_PCCARD is not set
+CONFIG_PCCARD=y
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=y
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+# CONFIG_CARDBUS is not set
+
+#
+# PC-card bridges
+#
+# CONFIG_YENTA is not set
+# CONFIG_PD6729 is not set
+# CONFIG_I82092 is not set
+# CONFIG_TCIC is not set
+CONFIG_PCMCIA_VRC4173=y
 
 #
 # PCI Hotplug Support
@@ -226,10 +240,7 @@
 CONFIG_IP_MULTICAST=y
 # CONFIG_IP_ADVANCED_ROUTER is not set
 CONFIG_IP_FIB_HASH=y
-CONFIG_IP_PNP=y
-# CONFIG_IP_PNP_DHCP is not set
-CONFIG_IP_PNP_BOOTP=y
-# CONFIG_IP_PNP_RARP is not set
+# CONFIG_IP_PNP is not set
 # CONFIG_NET_IPIP is not set
 # CONFIG_NET_IPGRE is not set
 # CONFIG_IP_MROUTE is not set
@@ -292,7 +303,7 @@
 #
 CONFIG_STANDALONE=y
 CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=m
+CONFIG_FW_LOADER=y
 
 #
 # Connector - unified userspace <-> kernelspace linker
@@ -324,12 +335,11 @@
 # CONFIG_BLK_DEV_LOOP is not set
 # CONFIG_BLK_DEV_NBD is not set
 # CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
 # CONFIG_BLK_DEV_RAM is not set
 CONFIG_BLK_DEV_RAM_COUNT=16
 # CONFIG_LBD is not set
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+# CONFIG_CDROM_PKTCDVD is not set
 
 #
 # IO Schedulers
@@ -343,12 +353,35 @@
 #
 # ATA/ATAPI/MFM/RLL support
 #
-# CONFIG_IDE is not set
+CONFIG_IDE=y
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=m
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+# CONFIG_BLK_DEV_IDEPCI is not set
+# CONFIG_IDE_ARM is not set
+# CONFIG_BLK_DEV_IDEDMA is not set
+# CONFIG_IDEDMA_AUTO is not set
+# CONFIG_BLK_DEV_HD is not set
 
 #
 # SCSI device support
 #
-CONFIG_RAID_ATTRS=m
+# CONFIG_RAID_ATTRS is not set
 # CONFIG_SCSI is not set
 
 #
@@ -388,33 +421,12 @@
 #
 # PHY device support
 #
-CONFIG_PHYLIB=m
-CONFIG_PHYCONTROL=y
-
-#
-# MII PHY device drivers
-#
-CONFIG_MARVELL_PHY=m
-CONFIG_DAVICOM_PHY=m
-CONFIG_QSEMI_PHY=m
-CONFIG_LXT_PHY=m
-CONFIG_CICADA_PHY=m
 
 #
 # Ethernet (10 or 100Mbit)
 #
-CONFIG_NET_ETHERNET=y
-# CONFIG_MII is not set
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_NET_VENDOR_3COM is not set
-
-#
-# Tulip family network device support
-#
-# CONFIG_NET_TULIP is not set
-# CONFIG_HP100 is not set
-# CONFIG_NET_PCI is not set
+# CONFIG_NET_ETHERNET is not set
+CONFIG_MII=m
 
 #
 # Ethernet (1000 Mbit)
@@ -447,9 +459,59 @@
 #
 # Wireless LAN (non-hamradio)
 #
-# CONFIG_NET_RADIO is not set
-# CONFIG_IPW_DEBUG is not set
-CONFIG_IPW2200=m
+CONFIG_NET_RADIO=y
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_PCMCIA_WAVELAN is not set
+# CONFIG_PCMCIA_NETWAVE is not set
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+# CONFIG_PCMCIA_RAYCS is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+# CONFIG_IPW2100 is not set
+# CONFIG_IPW2200 is not set
+CONFIG_HERMES=m
+# CONFIG_PLX_HERMES is not set
+# CONFIG_TMD_HERMES is not set
+# CONFIG_NORTEL_HERMES is not set
+# CONFIG_PCI_HERMES is not set
+# CONFIG_ATMEL is not set
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+CONFIG_PCMCIA_HERMES=m
+# CONFIG_PCMCIA_SPECTRUM is not set
+# CONFIG_AIRO_CS is not set
+# CONFIG_PCMCIA_WL3501 is not set
+
+#
+# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
+#
+# CONFIG_PRISM54 is not set
+# CONFIG_HOSTAP is not set
+CONFIG_NET_WIRELESS=y
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+CONFIG_PCMCIA_3C589=m
+CONFIG_PCMCIA_3C574=m
+CONFIG_PCMCIA_FMVJ18X=m
+CONFIG_PCMCIA_PCNET=m
+CONFIG_PCMCIA_NMCLAN=m
+CONFIG_PCMCIA_SMC91C92=m
+CONFIG_PCMCIA_XIRC2PS=m
+CONFIG_PCMCIA_AXNET=m
 
 #
 # Wan interfaces
@@ -504,7 +566,7 @@
 # Hardware I/O ports
 #
 CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
+# CONFIG_SERIO_I8042 is not set
 CONFIG_SERIO_SERPORT=y
 # CONFIG_SERIO_PCIPS2 is not set
 # CONFIG_SERIO_LIBPS2 is not set
@@ -522,17 +584,15 @@
 #
 # Serial drivers
 #
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_NR_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
+# CONFIG_SERIAL_8250 is not set
 
 #
 # Non-8250 serial port support
 #
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_VR41XX is not set
+CONFIG_SERIAL_VR41XX=y
+CONFIG_SERIAL_VR41XX_CONSOLE=y
 # CONFIG_SERIAL_JSM is not set
 CONFIG_UNIX98_PTYS=y
 CONFIG_LEGACY_PTYS=y
@@ -557,7 +617,12 @@
 # Ftape, the floppy tape device driver
 #
 # CONFIG_DRM is not set
-# CONFIG_GPIO_VR41XX is not set
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+CONFIG_GPIO_VR41XX=y
 # CONFIG_RAW_DRIVER is not set
 
 #
@@ -620,7 +685,118 @@
 #
 CONFIG_USB_ARCH_HAS_HCD=y
 CONFIG_USB_ARCH_HAS_OHCI=y
-# CONFIG_USB is not set
+CONFIG_USB=m
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_EHCI_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_UHCI_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_BLUETOOTH_TTY is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
+#
+# CONFIG_USB_STORAGE is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_MTOUCH is not set
+# CONFIG_USB_ITMTOUCH is not set
+# CONFIG_USB_EGALAX is not set
+# CONFIG_USB_YEALINK is not set
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+
+#
+# USB Multimedia devices
+#
+# CONFIG_USB_DABUSB is not set
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+CONFIG_USB_PEGASUS=m
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGETKIT is not set
+# CONFIG_USB_PHIDGETSERVO is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
 
 #
 # USB Gadget Support
@@ -711,7 +887,6 @@
 # CONFIG_NFS_V4 is not set
 # CONFIG_NFS_DIRECTIO is not set
 # CONFIG_NFSD is not set
-CONFIG_ROOT_NFS=y
 CONFIG_LOCKD=y
 CONFIG_NFS_COMMON=y
 CONFIG_SUNRPC=y
@@ -747,7 +922,7 @@
 # CONFIG_DEBUG_KERNEL is not set
 CONFIG_LOG_BUF_SHIFT=14
 CONFIG_CROSSCOMPILE=y
-CONFIG_CMDLINE=""
+CONFIG_CMDLINE="mem=32M console=ttyVR0,19200"
 
 #
 # Security options
@@ -794,7 +969,7 @@
 #
 # CONFIG_CRC_CCITT is not set
 CONFIG_CRC16=m
-CONFIG_CRC32=m
+CONFIG_CRC32=y
 CONFIG_LIBCRC32C=m
 CONFIG_ZLIB_INFLATE=m
 CONFIG_ZLIB_DEFLATE=m
diff -urN -X dontdiff a-orig/arch/mips/configs/tb0226_defconfig a/arch/mips/configs/tb0226_defconfig
--- a-orig/arch/mips/configs/tb0226_defconfig	2005-10-01 00:31:35.000000000 +0900
+++ a/arch/mips/configs/tb0226_defconfig	2005-10-02 01:40:41.000000000 +0900
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Linux kernel version: 2.6.14-rc2
-# Thu Sep 22 02:17:33 2005
+# Sun Oct  2 01:23:35 2005
 #
 CONFIG_MIPS=y
 
@@ -115,13 +115,20 @@
 # CONFIG_NEC_CMBVR4133 is not set
 # CONFIG_CASIO_E55 is not set
 # CONFIG_IBM_WORKPAD is not set
-# CONFIG_TANBAC_TB022X is not set
+CONFIG_TANBAC_TB022X=y
+CONFIG_TANBAC_TB0226=y
 # CONFIG_VICTOR_MPC30X is not set
 # CONFIG_ZAO_CAPCELLA is not set
+CONFIG_PCI_VR41XX=y
+# CONFIG_VRC4173 is not set
 CONFIG_RWSEM_GENERIC_SPINLOCK=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_DMA_NONCOHERENT=y
+CONFIG_DMA_NEED_PCI_MAP_STATE=y
 # CONFIG_CPU_BIG_ENDIAN is not set
-# CONFIG_CPU_LITTLE_ENDIAN is not set
+CONFIG_CPU_LITTLE_ENDIAN=y
+CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
+CONFIG_IRQ_CPU=y
 CONFIG_MIPS_L1_CACHE_SHIFT=5
 
 #
@@ -146,19 +153,22 @@
 # CONFIG_CPU_RM7000 is not set
 # CONFIG_CPU_RM9000 is not set
 # CONFIG_CPU_SB1 is not set
+CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
+CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
 CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
 CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
 
 #
 # Kernel type
 #
-# CONFIG_32BIT is not set
+CONFIG_32BIT=y
 # CONFIG_64BIT is not set
 CONFIG_PAGE_SIZE_4KB=y
 # CONFIG_PAGE_SIZE_8KB is not set
 # CONFIG_PAGE_SIZE_16KB is not set
 # CONFIG_PAGE_SIZE_64KB is not set
 # CONFIG_MIPS_MT is not set
+# CONFIG_CPU_ADVANCED is not set
 CONFIG_CPU_HAS_SYNC=y
 CONFIG_GENERIC_HARDIRQS=y
 CONFIG_GENERIC_IRQ_PROBE=y
@@ -177,6 +187,9 @@
 #
 # Bus options (PCI, PCMCIA, EISA, ISA, TC)
 #
+CONFIG_HW_HAS_PCI=y
+CONFIG_PCI=y
+# CONFIG_PCI_LEGACY_PROC is not set
 CONFIG_MMU=y
 
 #
@@ -187,12 +200,14 @@
 #
 # PCI Hotplug Support
 #
+# CONFIG_HOTPLUG_PCI is not set
 
 #
 # Executable file formats
 #
 CONFIG_BINFMT_ELF=y
 # CONFIG_BINFMT_MISC is not set
+CONFIG_TRAD_SIGNALS=y
 
 #
 # Networking
@@ -308,16 +323,21 @@
 #
 # Block devices
 #
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
 # CONFIG_BLK_DEV_COW_COMMON is not set
 CONFIG_BLK_DEV_LOOP=m
 # CONFIG_BLK_DEV_CRYPTOLOOP is not set
 CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
 CONFIG_BLK_DEV_RAM=m
 CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=4096
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+# CONFIG_LBD is not set
+# CONFIG_CDROM_PKTCDVD is not set
 
 #
 # IO Schedulers
@@ -331,34 +351,12 @@
 #
 # ATA/ATAPI/MFM/RLL support
 #
-CONFIG_IDE=y
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-CONFIG_IDEDISK_MULTI_MODE=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-CONFIG_BLK_DEV_IDESCSI=y
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_IDE_ARM is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_BLK_DEV_HD is not set
+# CONFIG_IDE is not set
 
 #
 # SCSI device support
 #
-CONFIG_RAID_ATTRS=m
+# CONFIG_RAID_ATTRS is not set
 CONFIG_SCSI=y
 CONFIG_SCSI_PROC_FS=y
 
@@ -368,16 +366,15 @@
 CONFIG_BLK_DEV_SD=y
 # CONFIG_CHR_DEV_ST is not set
 # CONFIG_CHR_DEV_OSST is not set
-CONFIG_BLK_DEV_SR=y
-# CONFIG_BLK_DEV_SR_VENDOR is not set
-CONFIG_CHR_DEV_SG=y
+# CONFIG_BLK_DEV_SR is not set
+# CONFIG_CHR_DEV_SG is not set
 # CONFIG_CHR_DEV_SCH is not set
 
 #
 # Some SCSI devices (e.g. CD jukebox) support multiple LUNs
 #
 CONFIG_SCSI_MULTI_LUN=y
-CONFIG_SCSI_CONSTANTS=y
+# CONFIG_SCSI_CONSTANTS is not set
 # CONFIG_SCSI_LOGGING is not set
 
 #
@@ -386,12 +383,42 @@
 # CONFIG_SCSI_SPI_ATTRS is not set
 # CONFIG_SCSI_FC_ATTRS is not set
 # CONFIG_SCSI_ISCSI_ATTRS is not set
-CONFIG_SCSI_SAS_ATTRS=m
+# CONFIG_SCSI_SAS_ATTRS is not set
 
 #
 # SCSI low-level drivers
 #
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_3W_9XXX is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
 # CONFIG_SCSI_SATA is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_IPR is not set
+# CONFIG_SCSI_QLOGIC_FC is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+CONFIG_SCSI_QLA2XXX=y
+# CONFIG_SCSI_QLA21XX is not set
+# CONFIG_SCSI_QLA22XX is not set
+# CONFIG_SCSI_QLA2300 is not set
+# CONFIG_SCSI_QLA2322 is not set
+# CONFIG_SCSI_QLA6312 is not set
+# CONFIG_SCSI_QLA24XX is not set
+# CONFIG_SCSI_LPFC is not set
+# CONFIG_SCSI_DC395x is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_NSP32 is not set
 # CONFIG_SCSI_DEBUG is not set
 
 #
@@ -403,14 +430,18 @@
 # Fusion MPT device support
 #
 # CONFIG_FUSION is not set
+# CONFIG_FUSION_SPI is not set
+# CONFIG_FUSION_FC is not set
 
 #
 # IEEE 1394 (FireWire) support
 #
+# CONFIG_IEEE1394 is not set
 
 #
 # I2O device support
 #
+# CONFIG_I2O is not set
 
 #
 # Network device support
@@ -422,6 +453,11 @@
 # CONFIG_TUN is not set
 
 #
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+
+#
 # PHY device support
 #
 CONFIG_PHYLIB=m
@@ -440,38 +476,81 @@
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
-# CONFIG_MII is not set
+CONFIG_MII=y
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_NET_VENDOR_3COM is not set
+
+#
+# Tulip family network device support
+#
+# CONFIG_NET_TULIP is not set
+# CONFIG_HP100 is not set
+CONFIG_NET_PCI=y
+# CONFIG_PCNET32 is not set
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_ADAPTEC_STARFIRE is not set
+# CONFIG_B44 is not set
+# CONFIG_FORCEDETH is not set
+# CONFIG_DGRS is not set
+CONFIG_EEPRO100=y
+# CONFIG_E100 is not set
+# CONFIG_FEALNX is not set
+# CONFIG_NATSEMI is not set
+# CONFIG_NE2K_PCI is not set
+# CONFIG_8139CP is not set
+# CONFIG_8139TOO is not set
+# CONFIG_SIS900 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_SUNDANCE is not set
+# CONFIG_TLAN is not set
+# CONFIG_VIA_RHINE is not set
+# CONFIG_LAN_SAA9730 is not set
 
 #
 # Ethernet (1000 Mbit)
 #
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_VIA_VELOCITY is not set
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2 is not set
 
 #
 # Ethernet (10000 Mbit)
 #
+# CONFIG_CHELSIO_T1 is not set
+# CONFIG_IXGB is not set
+# CONFIG_S2IO is not set
 
 #
 # Token Ring devices
 #
+# CONFIG_TR is not set
 
 #
 # Wireless LAN (non-hamradio)
 #
 # CONFIG_NET_RADIO is not set
+# CONFIG_IPW2200 is not set
 
 #
 # Wan interfaces
 #
 # CONFIG_WAN is not set
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-# CONFIG_PPP_FILTER is not set
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPPOE=m
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PPP is not set
 # CONFIG_SLIP is not set
+# CONFIG_NET_FC is not set
 # CONFIG_SHAPER is not set
 # CONFIG_NETCONSOLE is not set
 # CONFIG_NETPOLL is not set
@@ -495,10 +574,7 @@
 #
 # Userland interfaces
 #
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_MOUSEDEV_PSAUX=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_MOUSEDEV is not set
 # CONFIG_INPUT_JOYDEV is not set
 # CONFIG_INPUT_TSDEV is not set
 # CONFIG_INPUT_EVDEV is not set
@@ -516,11 +592,7 @@
 #
 # Hardware I/O ports
 #
-CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
-CONFIG_SERIO_SERPORT=y
-# CONFIG_SERIO_LIBPS2 is not set
-CONFIG_SERIO_RAW=m
+# CONFIG_SERIO is not set
 # CONFIG_GAMEPORT is not set
 
 #
@@ -534,17 +606,16 @@
 #
 # Serial drivers
 #
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_NR_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
+# CONFIG_SERIAL_8250 is not set
 
 #
 # Non-8250 serial port support
 #
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_VR41XX is not set
+CONFIG_SERIAL_VR41XX=y
+CONFIG_SERIAL_VR41XX_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
 CONFIG_UNIX98_PTYS=y
 CONFIG_LEGACY_PTYS=y
 CONFIG_LEGACY_PTY_COUNT=256
@@ -562,16 +633,20 @@
 # CONFIG_GEN_RTC is not set
 # CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_TANBAC_TB0219 is not set
 
 #
 # Ftape, the floppy tape device driver
 #
-# CONFIG_GPIO_VR41XX is not set
+# CONFIG_DRM is not set
+CONFIG_GPIO_VR41XX=y
 # CONFIG_RAW_DRIVER is not set
 
 #
 # TPM devices
 #
+# CONFIG_TCG_TPM is not set
 
 #
 # I2C support
@@ -610,50 +685,147 @@
 #
 # Graphics support
 #
-CONFIG_FB=y
-# CONFIG_FB_CFB_FILLRECT is not set
-# CONFIG_FB_CFB_COPYAREA is not set
-# CONFIG_FB_CFB_IMAGEBLIT is not set
-# CONFIG_FB_SOFT_CURSOR is not set
-# CONFIG_FB_MACMODES is not set
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-# CONFIG_FB_S1D13XXX is not set
-# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB is not set
 
 #
 # Console display driver support
 #
 # CONFIG_VGA_CONSOLE is not set
 CONFIG_DUMMY_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE is not set
 
 #
-# Logo configuration
+# Sound
 #
-# CONFIG_LOGO is not set
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+# CONFIG_SOUND is not set
 
 #
-# Sound
+# USB support
 #
-CONFIG_SOUND=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
 
 #
-# Advanced Linux Sound Architecture
+# Miscellaneous USB options
 #
-# CONFIG_SND is not set
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
 
 #
-# Open Sound System
+# USB Host Controller Drivers
 #
-# CONFIG_SOUND_PRIME is not set
+CONFIG_USB_EHCI_HCD=y
+# CONFIG_USB_EHCI_SPLIT_ISO is not set
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_UHCI_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
 
 #
-# USB support
+# USB Device Class drivers
+#
+# CONFIG_USB_BLUETOOTH_TTY is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_MTOUCH is not set
+# CONFIG_USB_ITMTOUCH is not set
+# CONFIG_USB_EGALAX is not set
+# CONFIG_USB_YEALINK is not set
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB Multimedia devices
+#
+# CONFIG_USB_DABUSB is not set
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGETKIT is not set
+# CONFIG_USB_PHIDGETSERVO is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
 #
-# CONFIG_USB_ARCH_HAS_HCD is not set
-# CONFIG_USB_ARCH_HAS_OHCI is not set
 
 #
 # USB Gadget Support
@@ -668,6 +840,7 @@
 #
 # InfiniBand support
 #
+# CONFIG_INFINIBAND is not set
 
 #
 # SN Devices
@@ -697,20 +870,14 @@
 #
 # CD-ROM/DVD Filesystems
 #
-CONFIG_ISO9660_FS=y
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-CONFIG_ZISOFS_FS=y
+# CONFIG_ISO9660_FS is not set
 # CONFIG_UDF_FS is not set
 
 #
 # DOS/FAT/NT Filesystems
 #
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_MSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
 # CONFIG_NTFS_FS is not set
 
 #
@@ -833,7 +1000,7 @@
 # CONFIG_DEBUG_KERNEL is not set
 CONFIG_LOG_BUF_SHIFT=14
 CONFIG_CROSSCOMPILE=y
-CONFIG_CMDLINE=""
+CONFIG_CMDLINE="mem=32M console=ttyVR0,115200"
 
 #
 # Security options
@@ -882,5 +1049,5 @@
 CONFIG_CRC16=m
 CONFIG_CRC32=m
 CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_INFLATE=m
 CONFIG_ZLIB_DEFLATE=m
diff -urN -X dontdiff a-orig/arch/mips/configs/tb0229_defconfig a/arch/mips/configs/tb0229_defconfig
--- a-orig/arch/mips/configs/tb0229_defconfig	2005-10-01 00:31:36.000000000 +0900
+++ a/arch/mips/configs/tb0229_defconfig	2005-10-02 01:55:33.000000000 +0900
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Linux kernel version: 2.6.14-rc2
-# Thu Sep 22 02:17:36 2005
+# Sun Oct  2 01:45:15 2005
 #
 CONFIG_MIPS=y
 
@@ -116,7 +116,7 @@
 # CONFIG_CASIO_E55 is not set
 # CONFIG_IBM_WORKPAD is not set
 CONFIG_TANBAC_TB022X=y
-CONFIG_TANBAC_TB0226=y
+# CONFIG_TANBAC_TB0226 is not set
 # CONFIG_VICTOR_MPC30X is not set
 # CONFIG_ZAO_CAPCELLA is not set
 CONFIG_PCI_VR41XX=y
@@ -333,6 +333,7 @@
 # CONFIG_BLK_DEV_CRYPTOLOOP is not set
 CONFIG_BLK_DEV_NBD=m
 # CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=4096
@@ -359,7 +360,7 @@
 #
 # SCSI device support
 #
-CONFIG_RAID_ATTRS=m
+# CONFIG_RAID_ATTRS is not set
 # CONFIG_SCSI is not set
 
 #
@@ -425,7 +426,30 @@
 #
 # CONFIG_NET_TULIP is not set
 # CONFIG_HP100 is not set
-# CONFIG_NET_PCI is not set
+CONFIG_NET_PCI=y
+# CONFIG_PCNET32 is not set
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_ADAPTEC_STARFIRE is not set
+# CONFIG_B44 is not set
+# CONFIG_FORCEDETH is not set
+# CONFIG_DGRS is not set
+CONFIG_EEPRO100=y
+# CONFIG_E100 is not set
+# CONFIG_FEALNX is not set
+# CONFIG_NATSEMI is not set
+# CONFIG_NE2K_PCI is not set
+# CONFIG_8139CP is not set
+CONFIG_8139TOO=y
+CONFIG_8139TOO_PIO=y
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+# CONFIG_8139TOO_8129 is not set
+# CONFIG_8139_OLD_RX_RESET is not set
+# CONFIG_SIS900 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_SUNDANCE is not set
+# CONFIG_TLAN is not set
+# CONFIG_VIA_RHINE is not set
+# CONFIG_LAN_SAA9730 is not set
 
 #
 # Ethernet (1000 Mbit)
@@ -436,10 +460,12 @@
 # CONFIG_NS83820 is not set
 # CONFIG_HAMACHI is not set
 # CONFIG_YELLOWFIN is not set
-# CONFIG_R8169 is not set
+CONFIG_R8169=y
+# CONFIG_R8169_NAPI is not set
 # CONFIG_SIS190 is not set
 # CONFIG_SKGE is not set
 # CONFIG_SK98LIN is not set
+# CONFIG_VIA_VELOCITY is not set
 # CONFIG_TIGON3 is not set
 # CONFIG_BNX2 is not set
 
@@ -503,10 +529,7 @@
 #
 # Userland interfaces
 #
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_MOUSEDEV_PSAUX=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_MOUSEDEV is not set
 # CONFIG_INPUT_JOYDEV is not set
 # CONFIG_INPUT_TSDEV is not set
 # CONFIG_INPUT_EVDEV is not set
@@ -524,12 +547,7 @@
 #
 # Hardware I/O ports
 #
-CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
-CONFIG_SERIO_SERPORT=y
-# CONFIG_SERIO_PCIPS2 is not set
-# CONFIG_SERIO_LIBPS2 is not set
-CONFIG_SERIO_RAW=m
+# CONFIG_SERIO is not set
 # CONFIG_GAMEPORT is not set
 
 #
@@ -543,17 +561,15 @@
 #
 # Serial drivers
 #
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_NR_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
+# CONFIG_SERIAL_8250 is not set
 
 #
 # Non-8250 serial port support
 #
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_VR41XX is not set
+CONFIG_SERIAL_VR41XX=y
+CONFIG_SERIAL_VR41XX_CONSOLE=y
 # CONFIG_SERIAL_JSM is not set
 CONFIG_UNIX98_PTYS=y
 CONFIG_LEGACY_PTYS=y
@@ -573,7 +589,7 @@
 # CONFIG_DTLK is not set
 # CONFIG_R3964 is not set
 # CONFIG_APPLICOM is not set
-# CONFIG_TANBAC_TB0219 is not set
+CONFIG_TANBAC_TB0219=y
 
 #
 # Ftape, the floppy tape device driver
@@ -642,7 +658,120 @@
 #
 CONFIG_USB_ARCH_HAS_HCD=y
 CONFIG_USB_ARCH_HAS_OHCI=y
-# CONFIG_USB is not set
+CONFIG_USB=m
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=m
+# CONFIG_USB_EHCI_SPLIT_ISO is not set
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_UHCI_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_BLUETOOTH_TTY is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
+#
+# CONFIG_USB_STORAGE is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_MTOUCH is not set
+# CONFIG_USB_ITMTOUCH is not set
+# CONFIG_USB_EGALAX is not set
+# CONFIG_USB_YEALINK is not set
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+
+#
+# USB Multimedia devices
+#
+# CONFIG_USB_DABUSB is not set
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGETKIT is not set
+# CONFIG_USB_PHIDGETSERVO is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
 
 #
 # USB Gadget Support
@@ -838,7 +967,7 @@
 # CONFIG_DEBUG_KERNEL is not set
 CONFIG_LOG_BUF_SHIFT=14
 CONFIG_CROSSCOMPILE=y
-CONFIG_CMDLINE="mem=64M console=ttyS0,38400 ip=bootp root=/dev/nfs"
+CONFIG_CMDLINE="mem=64M console=ttyVR0,115200 ip=any root=/dev/nfs"
 
 #
 # Security options
diff -urN -X dontdiff a-orig/arch/mips/configs/workpad_defconfig a/arch/mips/configs/workpad_defconfig
--- a-orig/arch/mips/configs/workpad_defconfig	2005-10-01 00:31:37.000000000 +0900
+++ a/arch/mips/configs/workpad_defconfig	2005-10-02 02:04:49.000000000 +0900
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Linux kernel version: 2.6.14-rc2
-# Thu Sep 22 02:17:39 2005
+# Sun Oct  2 01:59:15 2005
 #
 CONFIG_MIPS=y
 
@@ -24,7 +24,7 @@
 # CONFIG_BSD_PROCESS_ACCT is not set
 CONFIG_SYSCTL=y
 # CONFIG_AUDIT is not set
-# CONFIG_HOTPLUG is not set
+CONFIG_HOTPLUG=y
 CONFIG_KOBJECT_UEVENT=y
 # CONFIG_IKCONFIG is not set
 CONFIG_INITRAMFS_SOURCE=""
@@ -190,7 +190,18 @@
 #
 # PCCARD (PCMCIA/CardBus) support
 #
-# CONFIG_PCCARD is not set
+CONFIG_PCCARD=y
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_PCMCIA=y
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_PCMCIA_IOCTL=y
+
+#
+# PC-card bridges
+#
+# CONFIG_I82365 is not set
+# CONFIG_TCIC is not set
+CONFIG_PCMCIA_PROBE=y
 
 #
 # PCI Hotplug Support
@@ -284,7 +295,7 @@
 #
 CONFIG_STANDALONE=y
 CONFIG_PREVENT_FIRMWARE_BUILD=y
-# CONFIG_FW_LOADER is not set
+CONFIG_FW_LOADER=y
 
 #
 # Connector - unified userspace <-> kernelspace linker
@@ -315,9 +326,7 @@
 # CONFIG_BLK_DEV_RAM is not set
 CONFIG_BLK_DEV_RAM_COUNT=16
 # CONFIG_LBD is not set
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_CDROM_PKTCDVD_BUFFERS=8
-# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+# CONFIG_CDROM_PKTCDVD is not set
 
 #
 # IO Schedulers
@@ -340,6 +349,7 @@
 # CONFIG_BLK_DEV_IDE_SATA is not set
 CONFIG_BLK_DEV_IDEDISK=y
 # CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECS=m
 # CONFIG_BLK_DEV_IDECD is not set
 # CONFIG_BLK_DEV_IDETAPE is not set
 # CONFIG_BLK_DEV_IDEFLOPPY is not set
@@ -358,7 +368,7 @@
 #
 # SCSI device support
 #
-CONFIG_RAID_ATTRS=m
+# CONFIG_RAID_ATTRS is not set
 # CONFIG_SCSI is not set
 
 #
@@ -417,7 +427,7 @@
 # Ethernet (10 or 100Mbit)
 #
 CONFIG_NET_ETHERNET=y
-# CONFIG_MII is not set
+CONFIG_MII=m
 # CONFIG_NET_VENDOR_3COM is not set
 # CONFIG_NET_VENDOR_SMC is not set
 # CONFIG_NET_VENDOR_RACAL is not set
@@ -447,6 +457,19 @@
 # CONFIG_NET_RADIO is not set
 
 #
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+CONFIG_PCMCIA_3C589=m
+CONFIG_PCMCIA_3C574=m
+CONFIG_PCMCIA_FMVJ18X=m
+CONFIG_PCMCIA_PCNET=m
+CONFIG_PCMCIA_NMCLAN=m
+CONFIG_PCMCIA_SMC91C92=m
+CONFIG_PCMCIA_XIRC2PS=m
+CONFIG_PCMCIA_AXNET=m
+
+#
 # Wan interfaces
 #
 # CONFIG_WAN is not set
@@ -497,7 +520,7 @@
 # Hardware I/O ports
 #
 CONFIG_SERIO=y
-CONFIG_SERIO_I8042=y
+# CONFIG_SERIO_I8042 is not set
 CONFIG_SERIO_SERPORT=y
 # CONFIG_SERIO_LIBPS2 is not set
 CONFIG_SERIO_RAW=m
@@ -514,17 +537,15 @@
 #
 # Serial drivers
 #
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_NR_UARTS=4
-# CONFIG_SERIAL_8250_EXTENDED is not set
+# CONFIG_SERIAL_8250 is not set
 
 #
 # Non-8250 serial port support
 #
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
-# CONFIG_SERIAL_VR41XX is not set
+CONFIG_SERIAL_VR41XX=y
+CONFIG_SERIAL_VR41XX_CONSOLE=y
 CONFIG_UNIX98_PTYS=y
 CONFIG_LEGACY_PTYS=y
 CONFIG_LEGACY_PTY_COUNT=256
@@ -559,6 +580,11 @@
 #
 # Ftape, the floppy tape device driver
 #
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
 # CONFIG_GPIO_VR41XX is not set
 # CONFIG_RAW_DRIVER is not set
 
@@ -752,7 +778,7 @@
 # CONFIG_DEBUG_KERNEL is not set
 CONFIG_LOG_BUF_SHIFT=14
 CONFIG_CROSSCOMPILE=y
-CONFIG_CMDLINE=""
+CONFIG_CMDLINE="console=ttyVR0,19200 mem=16M"
 
 #
 # Security options
@@ -799,7 +825,7 @@
 #
 # CONFIG_CRC_CCITT is not set
 CONFIG_CRC16=m
-CONFIG_CRC32=m
+CONFIG_CRC32=y
 CONFIG_LIBCRC32C=m
 CONFIG_ZLIB_INFLATE=m
 CONFIG_ZLIB_DEFLATE=m

From anemo@mba.ocn.ne.jp Sun Oct  2 17:18:01 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Sun, 02 Oct 2005 17:18:21 +0100 (BST)
Received: from mba.ocn.ne.jp ([210.190.142.172]:30921 "EHLO smtp.mba.ocn.ne.jp")
	by ftp.linux-mips.org with ESMTP id S8133406AbVJBQSB (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Sun, 2 Oct 2005 17:18:01 +0100
Received: from localhost (p7129-ipad210funabasi.chiba.ocn.ne.jp [58.88.126.129])
	by smtp.mba.ocn.ne.jp (Postfix) with ESMTP id 35F748D00;
	Mon,  3 Oct 2005 01:17:56 +0900 (JST)
Date:	Mon, 03 Oct 2005 01:16:37 +0900 (JST)
Message-Id: <20051003.011637.41198806.anemo@mba.ocn.ne.jp>
To:	linux-mips@linux-mips.org
Cc:	ralf@linux-mips.org
Subject: [PATCH] Fix some sparse warnings
From:	Atsushi Nemoto <anemo@mba.ocn.ne.jp>
X-Fingerprint: 6ACA 1623 39BD 9A94 9B1A  B746 CA77 FE94 2874 D52F
X-Pgp-Public-Key: http://wwwkeys.pgp.net/pks/lookup?op=get&search=0x2874D52F
X-Mailer: Mew version 3.3 on Emacs 21.4 / Mule 5.0 (SAKAKI)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Return-Path: <anemo@mba.ocn.ne.jp>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9109
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: anemo@mba.ocn.ne.jp
Precedence: bulk
X-list: linux-mips

Make memcpy_fromio etc. more sparse-friendly.
Remove duplicate __user annotation from __copy_to_user.

Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>

diff --git a/include/asm-mips/io.h b/include/asm-mips/io.h
--- a/include/asm-mips/io.h
+++ b/include/asm-mips/io.h
@@ -25,6 +25,7 @@
 #include <asm/page.h>
 #include <asm/pgtable-bits.h>
 #include <asm/processor.h>
+#include <asm/string.h>
 
 #include <ioremap.h>
 #include <mangle-port.h>
@@ -521,9 +522,18 @@ BUILDSTRING(q, u64)
 /* Depends on MIPS II instruction set */
 #define mmiowb() asm volatile ("sync" ::: "memory")
 
-#define memset_io(a,b,c)	memset((void *)(a),(b),(c))
-#define memcpy_fromio(a,b,c)	memcpy((a),(void *)(b),(c))
-#define memcpy_toio(a,b,c)	memcpy((void *)(a),(b),(c))
+static inline void memset_io(volatile void __iomem *addr, unsigned char val, int count)
+{
+	memset((void __force *) addr, val, count);
+}
+static inline void memcpy_fromio(void *dst, const volatile void __iomem *src, int count)
+{
+	memcpy(dst, (void __force *) src, count);
+}
+static inline void memcpy_toio(volatile void __iomem *dst, const void *src, int count)
+{
+	memcpy((void __force *) dst, src, count);
+}
 
 /*
  * ISA space is 'always mapped' on currently supported MIPS systems, no need
diff --git a/include/asm-mips/uaccess.h b/include/asm-mips/uaccess.h
--- a/include/asm-mips/uaccess.h
+++ b/include/asm-mips/uaccess.h
@@ -417,7 +417,7 @@ extern size_t __copy_user(void *__to, co
  */
 #define __copy_to_user(to,from,n)					\
 ({									\
-	void __user __user *__cu_to;					\
+	void __user *__cu_to;						\
 	const void *__cu_from;						\
 	long __cu_len;							\
 									\

From ralf@linux-mips.org Mon Oct  3 11:10:11 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 03 Oct 2005 11:10:28 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:22548 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133440AbVJCKKL (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Mon, 3 Oct 2005 11:10:11 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j93AA4MO001842;
	Mon, 3 Oct 2005 11:10:06 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j91C7wrY017012;
	Sat, 1 Oct 2005 13:07:58 +0100
Date:	Sat, 1 Oct 2005 13:07:58 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	Andrew Isaacson <adi@broadcom.com>
Cc:	linux-mips@linux-mips.org
Subject: Re: [patch 5/5] SiByte fixes for 2.6.12
Message-ID: <20051001120758.GH14463@linux-mips.org>
References: <20050622230003.GA17725@broadcom.com> <20050622230203.GA17984@broadcom.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20050622230203.GA17984@broadcom.com>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9110
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Wed, Jun 22, 2005 at 04:02:03PM -0700, Andrew Isaacson wrote:

> Fix a stale comment in c-sb1.c.

Applied,

  Ralf

From ralf@linux-mips.org Mon Oct  3 11:10:55 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 03 Oct 2005 11:11:19 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:34322 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133442AbVJCKKM (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Mon, 3 Oct 2005 11:10:12 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j93AA4MU001842;
	Mon, 3 Oct 2005 11:10:07 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j91AF4pC023424;
	Sat, 1 Oct 2005 11:15:04 +0100
Date:	Sat, 1 Oct 2005 11:15:03 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	Andrew Isaacson <adi@broadcom.com>
Cc:	linux-mips@linux-mips.org
Subject: Re: [patch 1/5] SiByte fixes for 2.6.12
Message-ID: <20051001101503.GE14463@linux-mips.org>
References: <20050622230003.GA17725@broadcom.com> <20050622230042.GA17919@broadcom.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20050622230042.GA17919@broadcom.com>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9111
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Wed, Jun 22, 2005 at 04:00:42PM -0700, Andrew Isaacson wrote:

> SB1 does not use the R4K TLB code.

Now it does :-)

  Ralf

From ralf@linux-mips.org Mon Oct  3 11:11:45 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 03 Oct 2005 11:12:10 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:54025 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133444AbVJCKKM (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Mon, 3 Oct 2005 11:10:12 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j93AA4MW001842;
	Mon, 3 Oct 2005 11:10:07 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j919S78l009207;
	Sat, 1 Oct 2005 10:28:07 +0100
Date:	Sat, 1 Oct 2005 10:28:07 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	"Maciej W. Rozycki" <macro@linux-mips.org>
Cc:	Andrew Isaacson <adi@broadcom.com>, linux-mips@linux-mips.org
Subject: Re: [patch 1/5] SiByte fixes for 2.6.12
Message-ID: <20051001092807.GD14463@linux-mips.org>
References: <20050622230042.GA17919@broadcom.com> <Pine.LNX.4.61L.0506231153080.17155@blysk.ds.pg.gda.pl>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <Pine.LNX.4.61L.0506231153080.17155@blysk.ds.pg.gda.pl>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9112
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Thu, Jun 23, 2005 at 12:01:57PM +0100, Maciej W. Rozycki wrote:

>  Well, the flag is not really to specify whether the common code is to be 
> used or not.  It's about whether the TLB is like that of the R4k.  
> Actually it's always been a mystery for me why the common code cannot be 
> used for the SB1, but perhaps there is something specific that I could 
> only discover in that "SB-1 Core User Manual" that I yet have to see, 
> sigh...
> 
>  Of course if your TLB is indeed different from that of the R4k, then you 
> shouldn't be setting cp0.config.mt to 1 in the first place...

The reason was primarily the tiny bit of extra performance because the
SB1 doesn't need the hazard handling overhead.  Also tlb-sb1 has a few
changes that are needed to initialize a TLB in undefined state after
powerup.  That was needed to run Linux on firmware-less SB1 cores.

  Ralf

From ralf@linux-mips.org Mon Oct  3 11:12:36 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 03 Oct 2005 11:13:02 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:61707 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133445AbVJCKKM (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Mon, 3 Oct 2005 11:10:12 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j93AA4MQ001842;
	Mon, 3 Oct 2005 11:10:06 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j91BvQf5014346;
	Sat, 1 Oct 2005 12:57:26 +0100
Date:	Sat, 1 Oct 2005 12:57:26 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	Andy Isaacson <adi@hexapodia.org>
Cc:	"Maciej W. Rozycki" <macro@linux-mips.org>,
	linux-mips@linux-mips.org
Subject: Re: [patch 4/5] SiByte fixes for 2.6.12
Message-ID: <20051001115725.GG14463@linux-mips.org>
References: <20050622230151.GA17970@broadcom.com> <Pine.LNX.4.61L.0506231208120.17155@blysk.ds.pg.gda.pl> <20050623144926.GA10216@hexapodia.org> <Pine.LNX.4.61L.0506231601270.17155@blysk.ds.pg.gda.pl> <20050623222709.GC26427@hexapodia.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20050623222709.GC26427@hexapodia.org>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9113
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Thu, Jun 23, 2005 at 03:27:09PM -0700, Andy Isaacson wrote:

> >  Well, I've had a look at the code and it's such a mess.  Obviously 
> > calling ld_mmu_r4xx0() (or any of the other variants) should not be 
> > compiled conditionally and more specific cases, i.e. based on PRId values 
> > should take precedence.  I'll see if I can make it better.
> 
> I certainly won't argue with a cleanup of arch/mips/mm/cache.c, that
> code has annoyed me from first laying eyes on it...

So just did that, cpu_cache_init is looking bearable now.

  Ralf

From ralf@linux-mips.org Mon Oct  3 11:13:28 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 03 Oct 2005 11:13:45 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:48916 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133446AbVJCKKT (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Mon, 3 Oct 2005 11:10:19 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j93AA4Ma001842;
	Mon, 3 Oct 2005 11:10:09 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j8UMnEYM014586;
	Fri, 30 Sep 2005 23:49:14 +0100
Date:	Fri, 30 Sep 2005 23:49:14 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	Jan Pedersen <jan.pedersen@glaze.dk>
Cc:	"'Ilya A. Volynets-Evenbakh'" <ilya@total-knowledge.com>,
	linux-mips@linux-mips.org
Subject: Re: support for NS DP83847
Message-ID: <20050930224914.GC14463@linux-mips.org>
References: <43307CA9.1070506@total-knowledge.com> <20050920212703.0709137646C@rocket.glaze.se>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20050920212703.0709137646C@rocket.glaze.se>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9114
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Tue, Sep 20, 2005 at 11:27:04PM +0200, Jan Pedersen wrote:

> Sorry, patches now included.

The filename of the tarballs you sent suggest the patches inside are
meant for 2.4.  Linux 2.4 by now is in deep-freeze; nothing that isn't
strictly a bug fix will be accepted anymore.  2.6 Patches of course
would be gladly considered.

  Ralf

From ralf@linux-mips.org Mon Oct  3 11:14:11 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 03 Oct 2005 11:14:37 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:274 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133447AbVJCKKT (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Mon, 3 Oct 2005 11:10:19 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j93AA4Mc001842;
	Mon, 3 Oct 2005 11:10:14 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j8UMk81c014583;
	Fri, 30 Sep 2005 23:46:08 +0100
Date:	Fri, 30 Sep 2005 23:46:08 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	"Ilya A. Volynets-Evenbakh" <ilya@total-knowledge.com>
Cc:	Jan Pedersen <jan.pedersen@glaze.dk>, linux-mips@linux-mips.org
Subject: Re: support for NS DP83847
Message-ID: <20050930224608.GB14463@linux-mips.org>
References: <20050920211245.730CF376471@rocket.glaze.se> <43307CA9.1070506@total-knowledge.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <43307CA9.1070506@total-knowledge.com>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9115
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Tue, Sep 20, 2005 at 02:18:33PM -0700, Ilya A. Volynets-Evenbakh wrote:

> If you are interested in any patches being accepted into LMO CVS tree,
> you should email patches in question, not URLs. Noone will bother looking
> up your stuff on the web.

Or simply see Documentation/SubmittingPatches:

[...]
6) No MIME, no links, no compression, no attachments.  Just plain text.

Linus and other kernel developers need to be able to read and comment
on the changes you are submitting.  It is important for a kernel
developer to be able to "quote" your changes, using standard e-mail
tools, so that they may comment on specific portions of your code.

For this reason, all patches should be submitting e-mail "inline".
WARNING:  Be wary of your editor's word-wrap corrupting your patch,
if you choose to cut-n-paste your patch.

Do not attach the patch as a MIME attachment, compressed or not.
Many popular e-mail applications will not always transmit a MIME
attachment as plain text, making it impossible to comment on your
code.  A MIME attachment also takes Linus a bit more time to process,
decreasing the likelihood of your MIME-attached change being accepted.

Exception:  If your mailer is mangling patches then someone may ask
you to re-send them using MIME.
[...]

I'm doing plenty of the MIPS maintenance work offline, so URLs really
don't fly.

  Ralf

From ralf@linux-mips.org Mon Oct  3 11:15:03 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 03 Oct 2005 11:15:29 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:32266 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133449AbVJCKKl (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Mon, 3 Oct 2005 11:10:41 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j93AA4MY001842;
	Mon, 3 Oct 2005 11:10:08 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j8UMJ9dV014514;
	Fri, 30 Sep 2005 23:19:09 +0100
Date:	Fri, 30 Sep 2005 23:19:09 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	kbaidarov <kbaidarov@dev.rtsoft.ru>
Cc:	linux-mips@linux-mips.org
Subject: Re: [patch] db1550: useless memset() call
Message-ID: <20050930221909.GA14463@linux-mips.org>
References: <43329632.8070400@dev.rtsoft.ru>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <43329632.8070400@dev.rtsoft.ru>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9116
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Thu, Sep 22, 2005 at 03:32:02PM +0400, kbaidarov wrote:

> I've try kernel without memset() on the board - is ok, board boot.
> All drivers works fine. Than I grep the kernel sources:
> 
> [root@windmill linux]# grep -nri "memset(irq_desc" arch/
> arch/mips/au1000/common/irq.c:449:      memset(irq_desc, 0, 
> sizeof(irq_desc));
> arch/mips/ite-boards/generic/irq.c:184:        memset(irq_desc, 0, 
> sizeof(irq_desc));
> [root@windmill linux]#
> 
> Only 2 matches! Does we needs memset() at all?
> And if some one try to initialize irq_desc from start_kernel() before 
> arch_init_irq() call, then following arch_init_irq() call discard all that 
> initialization.

Exactly, so the initialization is wrong, so I'm removing both calls.

Thanks,

  Ralf

From ralf@linux-mips.org Mon Oct  3 11:34:08 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 03 Oct 2005 11:34:24 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:6684 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133447AbVJCKeI (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Mon, 3 Oct 2005 11:34:08 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j93AXxwX005574;
	Mon, 3 Oct 2005 11:33:59 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j93AXwC0005573;
	Mon, 3 Oct 2005 11:33:58 +0100
Date:	Mon, 3 Oct 2005 11:33:58 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	Yoichi Yuasa <yuasa@hh.iij4u.or.jp>
Cc:	linux-mips <linux-mips@linux-mips.org>
Subject: Re: [PATCH] vr41xx: update defconfig
Message-ID: <20051003103358.GA2624@linux-mips.org>
References: <20051002023213.61de0f26.yuasa@hh.iij4u.or.jp>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20051002023213.61de0f26.yuasa@hh.iij4u.or.jp>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9117
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Sun, Oct 02, 2005 at 02:32:13AM +0900, Yoichi Yuasa wrote:

> I had updated vr41xx machine's defconfig.
> Please apply.

Your patch had rejects on the date header of the defconfig files; I dropped
those segments and applied the remainder.

  Ralf

From ralf@linux-mips.org Mon Oct  3 11:40:55 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 03 Oct 2005 11:41:15 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:23065 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133451AbVJCKkz (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Mon, 3 Oct 2005 11:40:55 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j93AenFS009984;
	Mon, 3 Oct 2005 11:40:49 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j93Ael1O009983;
	Mon, 3 Oct 2005 11:40:47 +0100
Date:	Mon, 3 Oct 2005 11:40:47 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Cc:	linux-mips@linux-mips.org
Subject: Re: [PATCH] Fix some sparse warnings
Message-ID: <20051003104047.GB2624@linux-mips.org>
References: <20051003.011637.41198806.anemo@mba.ocn.ne.jp>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20051003.011637.41198806.anemo@mba.ocn.ne.jp>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9118
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Mon, Oct 03, 2005 at 01:16:37AM +0900, Atsushi Nemoto wrote:

> Make memcpy_fromio etc. more sparse-friendly.
> Remove duplicate __user annotation from __copy_to_user.
> 
> Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>

Thanks, applied.

  Ralf

From macro@linux-mips.org Mon Oct  3 12:56:17 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 03 Oct 2005 12:56:35 +0100 (BST)
Received: from pollux.ds.pg.gda.pl ([153.19.208.7]:54790 "EHLO
	pollux.ds.pg.gda.pl") by ftp.linux-mips.org with ESMTP
	id S3465607AbVJCL4R (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Mon, 3 Oct 2005 12:56:17 +0100
Received: from localhost (localhost [127.0.0.1])
	by pollux.ds.pg.gda.pl (Postfix) with ESMTP
	id 5255BF59AE; Mon,  3 Oct 2005 13:56:12 +0200 (CEST)
Received: from pollux.ds.pg.gda.pl ([127.0.0.1])
 by localhost (pollux [127.0.0.1]) (amavisd-new, port 10024) with ESMTP
 id 18870-03; Mon,  3 Oct 2005 13:56:12 +0200 (CEST)
Received: from piorun.ds.pg.gda.pl (piorun.ds.pg.gda.pl [153.19.208.8])
	by pollux.ds.pg.gda.pl (Postfix) with ESMTP
	id 1EF7FF5991; Mon,  3 Oct 2005 13:56:12 +0200 (CEST)
Received: from blysk.ds.pg.gda.pl (macro@blysk.ds.pg.gda.pl [153.19.208.6])
	by piorun.ds.pg.gda.pl (8.13.3/8.13.1) with ESMTP id j93BuD6B013495;
	Mon, 3 Oct 2005 13:56:13 +0200
Date:	Mon, 3 Oct 2005 12:56:20 +0100 (BST)
From:	"Maciej W. Rozycki" <macro@linux-mips.org>
To:	Ralf Baechle <ralf@linux-mips.org>
Cc:	Andrew Isaacson <adi@broadcom.com>, linux-mips@linux-mips.org
Subject: Re: [patch 1/5] SiByte fixes for 2.6.12
In-Reply-To: <20051001092807.GD14463@linux-mips.org>
Message-ID: <Pine.LNX.4.61L.0510031239260.8056@blysk.ds.pg.gda.pl>
References: <20050622230042.GA17919@broadcom.com>
 <Pine.LNX.4.61L.0506231153080.17155@blysk.ds.pg.gda.pl>
 <20051001092807.GD14463@linux-mips.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
X-Virus-Scanned: ClamAV 0.86.2/1107/Sun Oct  2 10:09:39 2005 on piorun.ds.pg.gda.pl
X-Virus-Status:	Clean
X-Virus-Scanned: by amavisd-new at pollux.ds.pg.gda.pl
Return-Path: <macro@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9119
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: macro@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Sat, 1 Oct 2005, Ralf Baechle wrote:

> >  Of course if your TLB is indeed different from that of the R4k, then you 
> > shouldn't be setting cp0.config.mt to 1 in the first place...
> 
> The reason was primarily the tiny bit of extra performance because the
> SB1 doesn't need the hazard handling overhead.  Also tlb-sb1 has a few

 That's hardly a justification for duplicating all the code; I've thought 
the reason was actually historical -- hadn't it been simply written 
separately initially and never got merged properly afterwards?

> changes that are needed to initialize a TLB in undefined state after
> powerup.  That was needed to run Linux on firmware-less SB1 cores.

 But that's true about the power-up state of the TLB on any MIPS CPU, 
isn't it?

  Maciej

From ralf@linux-mips.org Mon Oct  3 13:50:39 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 03 Oct 2005 13:50:56 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:3344 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S3465646AbVJCMuj (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Mon, 3 Oct 2005 13:50:39 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j93CoGma018656;
	Mon, 3 Oct 2005 13:50:16 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j93CoG44018655;
	Mon, 3 Oct 2005 13:50:16 +0100
Date:	Mon, 3 Oct 2005 13:50:16 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	"Maciej W. Rozycki" <macro@linux-mips.org>
Cc:	Andrew Isaacson <adi@broadcom.com>, linux-mips@linux-mips.org
Subject: Re: [patch 1/5] SiByte fixes for 2.6.12
Message-ID: <20051003125016.GE2624@linux-mips.org>
References: <20050622230042.GA17919@broadcom.com> <Pine.LNX.4.61L.0506231153080.17155@blysk.ds.pg.gda.pl> <20051001092807.GD14463@linux-mips.org> <Pine.LNX.4.61L.0510031239260.8056@blysk.ds.pg.gda.pl>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <Pine.LNX.4.61L.0510031239260.8056@blysk.ds.pg.gda.pl>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9120
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Mon, Oct 03, 2005 at 12:56:20PM +0100, Maciej W. Rozycki wrote:

> > >  Of course if your TLB is indeed different from that of the R4k, then you 
> > > shouldn't be setting cp0.config.mt to 1 in the first place...
> > 
> > The reason was primarily the tiny bit of extra performance because the
> > SB1 doesn't need the hazard handling overhead.  Also tlb-sb1 has a few
> 
>  That's hardly a justification for duplicating all the code; I've thought 
> the reason was actually historical -- hadn't it been simply written 
> separately initially and never got merged properly afterwards?

Historically even the R10000 had it's own copy of the TLB code - with
the sole reason of existence being it having neither hazards nor suffering
from potencial duplicate TLB entries.  Well, maybe also the very first
stages of MIPS SMP support.

Anyway, as you said that's little reason for an extra copy to exist and
so I both got axed.

> > changes that are needed to initialize a TLB in undefined state after
> > powerup.  That was needed to run Linux on firmware-less SB1 cores.
> 
>  But that's true about the power-up state of the TLB on any MIPS CPU, 
> isn't it?

Some come out of powerup with a cleared TLB but anyway, since normally
some piece of firmware takes care of these issues it's not something
Linux normally should need to worry about.

  Ralf

From drow@nevyn.them.org Mon Oct  3 14:15:54 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 03 Oct 2005 14:16:10 +0100 (BST)
Received: from nevyn.them.org ([66.93.172.17]:683 "EHLO nevyn.them.org")
	by ftp.linux-mips.org with ESMTP id S3465648AbVJCNPy (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Mon, 3 Oct 2005 14:15:54 +0100
Received: from drow by nevyn.them.org with local (Exim 4.52)
	id 1EMQAa-0004y2-EJ; Mon, 03 Oct 2005 09:15:52 -0400
Date:	Mon, 3 Oct 2005 09:15:52 -0400
From:	Daniel Jacobowitz <dan@debian.org>
To:	Ralf Baechle <ralf@linux-mips.org>
Cc:	"Maciej W. Rozycki" <macro@linux-mips.org>,
	Andrew Isaacson <adi@broadcom.com>, linux-mips@linux-mips.org
Subject: Re: [patch 1/5] SiByte fixes for 2.6.12
Message-ID: <20051003131551.GA19075@nevyn.them.org>
References: <20050622230042.GA17919@broadcom.com> <Pine.LNX.4.61L.0506231153080.17155@blysk.ds.pg.gda.pl> <20051001092807.GD14463@linux-mips.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20051001092807.GD14463@linux-mips.org>
User-Agent: Mutt/1.5.8i
Return-Path: <drow@nevyn.them.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9121
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: dan@debian.org
Precedence: bulk
X-list: linux-mips

On Sat, Oct 01, 2005 at 10:28:07AM +0100, Ralf Baechle wrote:
> On Thu, Jun 23, 2005 at 12:01:57PM +0100, Maciej W. Rozycki wrote:
> 
> >  Well, the flag is not really to specify whether the common code is to be 
> > used or not.  It's about whether the TLB is like that of the R4k.  
> > Actually it's always been a mystery for me why the common code cannot be 
> > used for the SB1, but perhaps there is something specific that I could 
> > only discover in that "SB-1 Core User Manual" that I yet have to see, 
> > sigh...
> > 
> >  Of course if your TLB is indeed different from that of the R4k, then you 
> > shouldn't be setting cp0.config.mt to 1 in the first place...
> 
> The reason was primarily the tiny bit of extra performance because the
> SB1 doesn't need the hazard handling overhead.  Also tlb-sb1 has a few
> changes that are needed to initialize a TLB in undefined state after
> powerup.  That was needed to run Linux on firmware-less SB1 cores.

FYI, all I have is a piece of hard evidence: this patch was the
difference between not booting and booting for a Sentosa with CFE. 
Which isn't firmwareless and isn't a tiny bit of extra performance
issue.

I'll try to give CVS HEAD a shot this week sometime.

-- 
Daniel Jacobowitz
CodeSourcery, LLC

From ralf@linux-mips.org Mon Oct  3 14:24:41 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 03 Oct 2005 14:24:57 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:20997 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S3465651AbVJCNYl (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Mon, 3 Oct 2005 14:24:41 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j93DOAcg019890;
	Mon, 3 Oct 2005 14:24:10 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j93DO889019889;
	Mon, 3 Oct 2005 14:24:08 +0100
Date:	Mon, 3 Oct 2005 14:24:08 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	Daniel Jacobowitz <dan@debian.org>
Cc:	"Maciej W. Rozycki" <macro@linux-mips.org>,
	Andrew Isaacson <adi@broadcom.com>, linux-mips@linux-mips.org
Subject: Re: [patch 1/5] SiByte fixes for 2.6.12
Message-ID: <20051003132408.GG2624@linux-mips.org>
References: <20050622230042.GA17919@broadcom.com> <Pine.LNX.4.61L.0506231153080.17155@blysk.ds.pg.gda.pl> <20051001092807.GD14463@linux-mips.org> <20051003131551.GA19075@nevyn.them.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20051003131551.GA19075@nevyn.them.org>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9122
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Mon, Oct 03, 2005 at 09:15:52AM -0400, Daniel Jacobowitz wrote:

> > >  Well, the flag is not really to specify whether the common code is to be 
> > > used or not.  It's about whether the TLB is like that of the R4k.  
> > > Actually it's always been a mystery for me why the common code cannot be 
> > > used for the SB1, but perhaps there is something specific that I could 
> > > only discover in that "SB-1 Core User Manual" that I yet have to see, 
> > > sigh...
> > > 
> > >  Of course if your TLB is indeed different from that of the R4k, then you 
> > > shouldn't be setting cp0.config.mt to 1 in the first place...
> > 
> > The reason was primarily the tiny bit of extra performance because the
> > SB1 doesn't need the hazard handling overhead.  Also tlb-sb1 has a few
> > changes that are needed to initialize a TLB in undefined state after
> > powerup.  That was needed to run Linux on firmware-less SB1 cores.
> 
> FYI, all I have is a piece of hard evidence: this patch was the
> difference between not booting and booting for a Sentosa with CFE. 
> Which isn't firmwareless and isn't a tiny bit of extra performance
> issue.
> 
> I'll try to give CVS HEAD a shot this week sometime.

Just as reminder for everybody - CVS is dead and frozen, the action is
playing on git now ...

  Ralf

From macro@linux-mips.org Mon Oct  3 14:35:00 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 03 Oct 2005 14:35:19 +0100 (BST)
Received: from pollux.ds.pg.gda.pl ([153.19.208.7]:32274 "EHLO
	pollux.ds.pg.gda.pl") by ftp.linux-mips.org with ESMTP
	id S3465651AbVJCNfA (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Mon, 3 Oct 2005 14:35:00 +0100
Received: from localhost (localhost [127.0.0.1])
	by pollux.ds.pg.gda.pl (Postfix) with ESMTP
	id 45D4EF5991; Mon,  3 Oct 2005 15:34:55 +0200 (CEST)
Received: from pollux.ds.pg.gda.pl ([127.0.0.1])
 by localhost (pollux [127.0.0.1]) (amavisd-new, port 10024) with ESMTP
 id 24570-04; Mon,  3 Oct 2005 15:34:55 +0200 (CEST)
Received: from piorun.ds.pg.gda.pl (piorun.ds.pg.gda.pl [153.19.208.8])
	by pollux.ds.pg.gda.pl (Postfix) with ESMTP
	id D27A8F597F; Mon,  3 Oct 2005 15:34:54 +0200 (CEST)
Received: from blysk.ds.pg.gda.pl (macro@blysk.ds.pg.gda.pl [153.19.208.6])
	by piorun.ds.pg.gda.pl (8.13.3/8.13.1) with ESMTP id j93DYvVE018436;
	Mon, 3 Oct 2005 15:34:57 +0200
Date:	Mon, 3 Oct 2005 14:35:04 +0100 (BST)
From:	"Maciej W. Rozycki" <macro@linux-mips.org>
To:	Daniel Jacobowitz <dan@debian.org>
Cc:	Ralf Baechle <ralf@linux-mips.org>,
	Andrew Isaacson <adi@broadcom.com>, linux-mips@linux-mips.org
Subject: Re: [patch 1/5] SiByte fixes for 2.6.12
In-Reply-To: <20051003131551.GA19075@nevyn.them.org>
Message-ID: <Pine.LNX.4.61L.0510031432410.8056@blysk.ds.pg.gda.pl>
References: <20050622230042.GA17919@broadcom.com>
 <Pine.LNX.4.61L.0506231153080.17155@blysk.ds.pg.gda.pl>
 <20051001092807.GD14463@linux-mips.org> <20051003131551.GA19075@nevyn.them.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
X-Virus-Scanned: ClamAV 0.86.2/1107/Sun Oct  2 10:09:39 2005 on piorun.ds.pg.gda.pl
X-Virus-Status:	Clean
X-Virus-Scanned: by amavisd-new at pollux.ds.pg.gda.pl
Return-Path: <macro@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9123
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: macro@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Mon, 3 Oct 2005, Daniel Jacobowitz wrote:

> FYI, all I have is a piece of hard evidence: this patch was the
> difference between not booting and booting for a Sentosa with CFE. 
> Which isn't firmwareless and isn't a tiny bit of extra performance
> issue.

 Actually workarounds have been floating around for some time. ;-)  But 
I'm glad this has now been fixed properly.

  Maciej

From ralf@linux-mips.org Mon Oct  3 14:37:01 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 03 Oct 2005 14:37:23 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:19732 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S3465652AbVJCNhB (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Mon, 3 Oct 2005 14:37:01 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j93DarfV020332;
	Mon, 3 Oct 2005 14:36:53 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j93Daqqt020331;
	Mon, 3 Oct 2005 14:36:52 +0100
Date:	Mon, 3 Oct 2005 14:36:52 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	Yoichi Yuasa <yuasa@hh.iij4u.or.jp>
Cc:	linux-mips@linux-mips.org
Subject: Re: linux-mips Vs kernel.org
Message-ID: <20051003133652.GI2624@linux-mips.org>
References: <OFDDFCB8DC.1BFCCB3E-ONC1257089.002AE830-C1257089.002B3D8D@sagem.com> <20050927093922.GA3793@linux-mips.org> <20050928005432.7d45b2f9.yuasa@hh.iij4u.or.jp>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20050928005432.7d45b2f9.yuasa@hh.iij4u.or.jp>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9124
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Wed, Sep 28, 2005 at 12:54:32AM +0900, Yoichi Yuasa wrote:

> > > We currently working with the 2.6.12 kernel, and wondering which from 
> > > linux-mips or kernel.org version we should use,
> > > in a more general manner, what are the differences between linux-mips and 
> > > kernel.org kernel source code, is one the
> > > mirror of the other, or is there one that frequently merge with the other 
> > > ?
> > 
> > At this stage the kernel.org tree is quite unusable for MIPS.
> 
> I have no problem kernel.org GIT with VR41xx.

See RFC 1925, section 2 (3):

With sufficient thrust, pigs fly just fine. However, this is not
necessarily a good idea. It is hard to be sure where they are going to
land, and it could be dangerous sitting under them as they fly overhead.

  Ralf

From unixe@comcast.net Tue Oct  4 01:00:50 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 04 Oct 2005 01:01:16 +0100 (BST)
Received: from rwcrmhc13.comcast.net ([216.148.227.118]:13051 "EHLO
	rwcrmhc12.comcast.net") by ftp.linux-mips.org with ESMTP
	id S3465664AbVJDAAu convert rfc822-to-8bit (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Tue, 4 Oct 2005 01:00:50 +0100
Received: from buzz (c-67-171-115-157.hsd1.ut.comcast.net[67.171.115.157])
          by comcast.net (rwcrmhc13) with SMTP
          id <2005100400003901500b6fere>; Tue, 4 Oct 2005 00:00:40 +0000
From:	"Kyle Unice" <unixe@comcast.net>
To:	<linux-mips@linux-mips.org>
Subject: Au1550 Serial port - linux-2.6.13.2
Date:	Mon, 3 Oct 2005 18:00:30 -0600
Message-ID: <000f01c5c876$a2b78740$0400a8c0@buzz>
MIME-Version: 1.0
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: 8BIT
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook, Build 10.0.6626
Importance: Normal
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180
Return-Path: <unixe@comcast.net>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9125
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: unixe@comcast.net
Precedence: bulk
X-list: linux-mips

I have configured linux-2.6.13.2 for a db1550_defconfig build.  When I
compile it, I get this error when compiling au1x00_uart.c:
  LD      usr/built-in.o
  HOSTCC  drivers/pci/gen-devlist
  DEVLIST drivers/pci/devlist.h
  CC      drivers/pci/names.o
In file included from include/linux/mm.h:36,
                 from include/asm/pci.h:10,
                 from include/linux/pci.h:919,
                 from drivers/pci/names.c:11:
include/asm/pgtable.h: In function `io_remap_pfn_range':
include/asm/pgtable.h:377: warning: unused variable `phys_addr_high'
  LD      drivers/pci/built-in.o
  CC      drivers/serial/au1x00_uart.o
drivers/serial/au1x00_uart.c:72: error: `AU1000_UART0_INT' undeclared here
(not
in a function)
drivers/serial/au1x00_uart.c:72: error: initializer element is not constant
drivers/serial/au1x00_uart.c:72: error: (near initialization for
`old_serial_por
t[0].irq')
drivers/serial/au1x00_uart.c:75: error: initializer element is not constant
drivers/serial/au1x00_uart.c:75: error: (near initialization for
`old_serial_por
t[0]')
drivers/serial/au1x00_uart.c:78: error: `AU1000_UART1_INT' undeclared here
(not
in a function)
drivers/serial/au1x00_uart.c:78: error: initializer element is not constant
drivers/serial/au1x00_uart.c:78: error: (near initialization for
`old_serial_por
t[1].irq')
drivers/serial/au1x00_uart.c:81: error: initializer element is not constant
drivers/serial/au1x00_uart.c:81: error: (near initialization for
`old_serial_por
t[1]')
drivers/serial/au1x00_uart.c:84: error: `UART2_ADDR' undeclared here (not in
a f
unction)
drivers/serial/au1x00_uart.c:84: error: initializer element is not constant
drivers/serial/au1x00_uart.c:84: error: (near initialization for
`old_serial_por
t[2].iomem_base')
drivers/serial/au1x00_uart.c:85: error: `AU1000_UART2_INT' undeclared here
(not
in a function)
drivers/serial/au1x00_uart.c:85: error: initializer element is not constant
drivers/serial/au1x00_uart.c:85: error: (near initialization for
`old_serial_por
t[2].irq')
drivers/serial/au1x00_uart.c:88: error: initializer element is not constant
drivers/serial/au1x00_uart.c:88: error: (near initialization for
`old_serial_por
t[2]')
drivers/serial/au1x00_uart.c:92: error: `AU1000_UART3_INT' undeclared here
(not
in a function)
drivers/serial/au1x00_uart.c:92: error: initializer element is not constant
drivers/serial/au1x00_uart.c:92: error: (near initialization for
`old_serial_por
t[3].irq')
drivers/serial/au1x00_uart.c:95: error: initializer element is not constant
drivers/serial/au1x00_uart.c:95: error: (near initialization for
`old_serial_por
t[3]')
make[2]: *** [drivers/serial/au1x00_uart.o] Error 1
make[1]: *** [drivers/serial] Error 2
make: *** [drivers] Error 2

Kyle@buzz /usr/src/linux-2.6.13.2
$ 



From dan@embeddedalley.com Tue Oct  4 01:44:26 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 04 Oct 2005 01:44:44 +0100 (BST)
Received: from smtp101.biz.mail.mud.yahoo.com ([68.142.200.236]:54391 "HELO
	smtp101.biz.mail.mud.yahoo.com") by ftp.linux-mips.org with SMTP
	id S3465666AbVJDAo0 (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 4 Oct 2005 01:44:26 +0100
Received: (qmail 55784 invoked from network); 4 Oct 2005 00:44:18 -0000
Received: from unknown (HELO ?192.168.1.107?) (dan@embeddedalley.com@71.128.175.242 with plain)
  by smtp101.biz.mail.mud.yahoo.com with SMTP; 4 Oct 2005 00:44:18 -0000
In-Reply-To: <000f01c5c876$a2b78740$0400a8c0@buzz>
References: <000f01c5c876$a2b78740$0400a8c0@buzz>
Mime-Version: 1.0 (Apple Message framework v623)
Content-Type: text/plain; charset=US-ASCII; format=flowed
Message-Id: <2e5c8ef0628b1886bde6e6ca6d76b79e@embeddedalley.com>
Content-Transfer-Encoding: 7bit
Cc:	<linux-mips@linux-mips.org>
From:	Dan Malek <dan@embeddedalley.com>
Subject: Re: Au1550 Serial port - linux-2.6.13.2
Date:	Mon, 3 Oct 2005 17:43:56 -0700
To:	"Kyle Unice" <unixe@comcast.net>
X-Mailer: Apple Mail (2.623)
Return-Path: <dan@embeddedalley.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9126
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: dan@embeddedalley.com
Precedence: bulk
X-list: linux-mips


On Oct 3, 2005, at 5:00 PM, Kyle Unice wrote:

> I have configured linux-2.6.13.2 for a db1550_defconfig build.  When I
> compile it, I get this error when compiling au1x00_uart.c:

You need to use the linux-mips.org CVS tree.  Current top of
tree is 2.6.14-rc2, which builds and boots fine on the db1550.

Thanks.

	-- Dan


From vagabon.xyz@gmail.com Tue Oct  4 09:49:55 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 04 Oct 2005 09:50:13 +0100 (BST)
Received: from zproxy.gmail.com ([64.233.162.193]:26540 "EHLO zproxy.gmail.com")
	by ftp.linux-mips.org with ESMTP id S8133458AbVJDItz (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Tue, 4 Oct 2005 09:49:55 +0100
Received: by zproxy.gmail.com with SMTP id j2so136222nzf
        for <linux-mips@linux-mips.org>; Tue, 04 Oct 2005 01:49:45 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:message-id:date:from:reply-to:to:subject:cc:mime-version:content-type;
        b=bLUshBcCyd0By1bKl40tGMD8JKyJnw85xGvdc4kUCH+0VehghgjquPFLUuNbyqNgixnSuXPtAxG3/rTfbglA8EuZgpUYtIJpCa5gyT8hXLNJF/eEyecj980kwiDHpKzmkdSSOGy5kevNm3Qc6j3I1dWB83IxHelaGoVDKhCDPzQ=
Received: by 10.36.224.78 with SMTP id w78mr48850nzg;
        Tue, 04 Oct 2005 01:49:44 -0700 (PDT)
Received: by 10.36.49.3 with HTTP; Tue, 4 Oct 2005 01:49:44 -0700 (PDT)
Message-ID: <cda58cb80510040149p690397afo@mail.gmail.com>
Date:	Tue, 4 Oct 2005 10:49:44 +0200
From:	Franck <vagabon.xyz@gmail.com>
Reply-To: Franck <vagabon.xyz@gmail.com>
To:	Ralf Baechle <ralf@linux-mips.org>
Subject: [PATCH] Add support for 4KS cpu.
Cc:	linux-mips@linux-mips.org
MIME-Version: 1.0
Content-Type: multipart/mixed; 
	boundary="----=_Part_3451_12254408.1128415784694"
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9127
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

------=_Part_3451_12254408.1128415784694
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

This patch adds support for both 4ksc and 4ksd cpus. These cpu are
mainly used in embedded system such as smartcard or point of sell
devices as they provide some extra security features.

Signed-off-by: Franck <vagabon.xyz@gmail.com>

------=_Part_3451_12254408.1128415784694
Content-Type: text/x-patch; name="4ksx-support.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="4ksx-support.patch"

ZGlmZiAtTnVycCBsaW51eC0yLjYuMTQtcmMyLW1pcHNjdnMvYXJjaC9taXBzL0tjb25maWcgbGlu
dXgtMi42LjE0LXJjMi1taXBzY3ZzLTRLU3gvYXJjaC9taXBzL0tjb25maWcKLS0tIGxpbnV4LTIu
Ni4xNC1yYzItbWlwc2N2cy9hcmNoL21pcHMvS2NvbmZpZwkyMDA1LTA5LTIzIDIyOjAyOjQ0LjAw
MDAwMDAwMCArMDIwMAorKysgbGludXgtMi42LjE0LXJjMi1taXBzY3ZzLTRLU3gvYXJjaC9taXBz
L0tjb25maWcJMjAwNS0xMC0wNCAwOTo1Mjo0My4wMDAwMDAwMDAgKzAyMDAKQEAgLTExMjMsNiAr
MTEyMywyMCBAQCBjb25maWcgQ1BVX1NCMQogCXNlbGVjdCBDUFVfU1VQUE9SVFNfNjRCSVRfS0VS
TkVMCiAJc2VsZWN0IENQVV9TVVBQT1JUU19ISUdITUVNCiAKK2NvbmZpZyBDUFVfNEtTQworCWJv
b2wgIjRLU0MiCisJc2VsZWN0IENQVV9TVVBQT1JUU18zMkJJVF9LRVJORUwKKwlzZWxlY3QgQ1BV
X0hBU19QUkVGRVRDSAorCWhlbHAKKwkgIE1JUFMgVGVjaG5vbG9naWVzIDRLU2Mtc2VyaWVzIHBy
b2Nlc3NvcnMuCisKK2NvbmZpZyBDUFVfNEtTRAorCWJvb2wgIjRLU0QiCisJc2VsZWN0IENQVV9T
VVBQT1JUU18zMkJJVF9LRVJORUwKKwlzZWxlY3QgQ1BVX0hBU19QUkVGRVRDSAorCWhlbHAKKwkg
IE1JUFMgVGVjaG5vbG9naWVzIDRLU2Qtc2VyaWVzIHByb2Nlc3NvcnMuCisKIGVuZGNob2ljZQog
CiBlbmRtZW51CmRpZmYgLU51cnAgbGludXgtMi42LjE0LXJjMi1taXBzY3ZzL2FyY2gvbWlwcy9r
ZXJuZWwvY3B1LXByb2JlLmMgbGludXgtMi42LjE0LXJjMi1taXBzY3ZzLTRLU3gvYXJjaC9taXBz
L2tlcm5lbC9jcHUtcHJvYmUuYwotLS0gbGludXgtMi42LjE0LXJjMi1taXBzY3ZzL2FyY2gvbWlw
cy9rZXJuZWwvY3B1LXByb2JlLmMJMjAwNS0wOC0xNiAxOTo1MDo0My4wMDAwMDAwMDAgKzAyMDAK
KysrIGxpbnV4LTIuNi4xNC1yYzItbWlwc2N2cy00S1N4L2FyY2gvbWlwcy9rZXJuZWwvY3B1LXBy
b2JlLmMJMjAwNS0xMC0wNCAwOTo0MTo0Mi4wMDAwMDAwMDAgKzAyMDAKQEAgLTU1Miw2ICs1NTIs
NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY3B1X3Byb2JlX21pcHMoc3RydWN0CiAJCWMtPmNwdXR5
cGUgPSBDUFVfNEtFQzsKIAkJYnJlYWs7CiAJY2FzZSBQUklEX0lNUF80S1NDOgorCWNhc2UgUFJJ
RF9JTVBfNEtTRDoKIAkJYy0+Y3B1dHlwZSA9IENQVV80S1NDOwogCQlicmVhazsKIAljYXNlIFBS
SURfSU1QXzVLQzoKZGlmZiAtTnVycCBsaW51eC0yLjYuMTQtcmMyLW1pcHNjdnMvYXJjaC9taXBz
L2tlcm5lbC9NYWtlZmlsZSBsaW51eC0yLjYuMTQtcmMyLW1pcHNjdnMtNEtTeC9hcmNoL21pcHMv
a2VybmVsL01ha2VmaWxlCi0tLSBsaW51eC0yLjYuMTQtcmMyLW1pcHNjdnMvYXJjaC9taXBzL2tl
cm5lbC9NYWtlZmlsZQkyMDA1LTA5LTAxIDIyOjQyOjQ2LjAwMDAwMDAwMCArMDIwMAorKysgbGlu
dXgtMi42LjE0LXJjMi1taXBzY3ZzLTRLU3gvYXJjaC9taXBzL2tlcm5lbC9NYWtlZmlsZQkyMDA1
LTEwLTA0IDA5OjMwOjI5LjAwMDAwMDAwMCArMDIwMApAQCAtMzEsNiArMzEsOCBAQCBvYmotJChD
T05GSUdfQ1BVX1NCMSkJCSs9IHI0a19mcHUubyByNGtfCiBvYmotJChDT05GSUdfQ1BVX01JUFMz
Ml9SMSkJKz0gcjRrX2ZwdS5vIHI0a19zd2l0Y2gubwogb2JqLSQoQ09ORklHX0NQVV9NSVBTNjRf
UjEpCSs9IHI0a19mcHUubyByNGtfc3dpdGNoLm8KIG9iai0kKENPTkZJR19DUFVfUjYwMDApCQkr
PSByNjAwMF9mcHUubyByNGtfc3dpdGNoLm8KK29iai0kKENPTkZJR19DUFVfNEtTQykJCSs9IHI0
a19zd2l0Y2gubworb2JqLSQoQ09ORklHX0NQVV80S1NEKQkJKz0gcjRrX3N3aXRjaC5vCiAKIG9i
ai0kKENPTkZJR19TTVApCQkrPSBzbXAubwogCmRpZmYgLU51cnAgbGludXgtMi42LjE0LXJjMi1t
aXBzY3ZzL2FyY2gvbWlwcy9saWItMzIvTWFrZWZpbGUgbGludXgtMi42LjE0LXJjMi1taXBzY3Zz
LTRLU3gvYXJjaC9taXBzL2xpYi0zMi9NYWtlZmlsZQotLS0gbGludXgtMi42LjE0LXJjMi1taXBz
Y3ZzL2FyY2gvbWlwcy9saWItMzIvTWFrZWZpbGUJMjAwNS0wNy0xMSAxMjowMzoyNy4wMDAwMDAw
MDAgKzAyMDAKKysrIGxpbnV4LTIuNi4xNC1yYzItbWlwc2N2cy00S1N4L2FyY2gvbWlwcy9saWIt
MzIvTWFrZWZpbGUJMjAwNS0xMC0wNCAwOTo0NDowOS4wMDAwMDAwMDAgKzAyMDAKQEAgLTIxLDUg
KzIxLDcgQEAgb2JqLSQoQ09ORklHX0NQVV9TQjEpCQkrPSBkdW1wX3RsYi5vCiBvYmotJChDT05G
SUdfQ1BVX1RYMzlYWCkJKz0gcjNrX2R1bXBfdGxiLm8KIG9iai0kKENPTkZJR19DUFVfVFg0OVhY
KQkrPSBkdW1wX3RsYi5vCiBvYmotJChDT05GSUdfQ1BVX1ZSNDFYWCkJKz0gZHVtcF90bGIubwor
b2JqLSQoQ09ORklHX0NQVV80S1NDKQkJKz0gZHVtcF90bGIubworb2JqLSQoQ09ORklHX0NQVV80
S1NEKQkJKz0gZHVtcF90bGIubwogCiBFWFRSQV9BRkxBR1MgOj0gJChDRkxBR1MpCmRpZmYgLU51
cnAgbGludXgtMi42LjE0LXJjMi1taXBzY3ZzL2FyY2gvbWlwcy9NYWtlZmlsZSBsaW51eC0yLjYu
MTQtcmMyLW1pcHNjdnMtNEtTeC9hcmNoL21pcHMvTWFrZWZpbGUKLS0tIGxpbnV4LTIuNi4xNC1y
YzItbWlwc2N2cy9hcmNoL21pcHMvTWFrZWZpbGUJMjAwNS0wOS0xNSAxMDo1MzoxMC4wMDAwMDAw
MDAgKzAyMDAKKysrIGxpbnV4LTIuNi4xNC1yYzItbWlwc2N2cy00S1N4L2FyY2gvbWlwcy9NYWtl
ZmlsZQkyMDA1LTEwLTA0IDA5OjI1OjIxLjAwMDAwMDAwMCArMDIwMApAQCAtMjM3LDYgKzIzNywx
NCBAQCBjZmxhZ3MtJChDT05GSUdfQ1BVX1IxMDAwMCkJKz0gXAogCQkJJChjYWxsIHNldF9nY2Nm
bGFncyxyMTAwMDAsbWlwczQscjgwMDAsbWlwczQsbWlwczIpIFwKIAkJCS1XYSwtLXRyYXAKIAor
Y2ZsYWdzLSQoQ09ORklHX0NQVV80S1NDKQkrPSBcCisJCQkkKGNhbGwgc2V0X2djY2ZsYWdzLDRr
ZWMsbWlwczMycjIscjQ2MDAsbWlwczMsbWlwczIpIFwKKwkJCS1tc21hcnRtaXBzIC1XYSwtLXRy
YXAKKworY2ZsYWdzLSQoQ09ORklHX0NQVV80S1NEKQkrPSBcCisJCQkkKGNhbGwgc2V0X2djY2Zs
YWdzLDRrZWMsbWlwczMycjIscjQ2MDAsbWlwczMsbWlwczIpIFwKKwkJCS1tc21hcnRtaXBzIC1X
YSwtLXRyYXAKKwogaWZkZWYgQ09ORklHX0NQVV9TQjEKIGlmZGVmIENPTkZJR19TQjFfUEFTU18x
X1dPUktBUk9VTkRTCiBNT0RGTEFHUwkrPSAtbXNiMS1wYXNzMS13b3JrYXJvdW5kcwpkaWZmIC1O
dXJwIGxpbnV4LTIuNi4xNC1yYzItbWlwc2N2cy9hcmNoL21pcHMvbW0vY2FjaGUuYyBsaW51eC0y
LjYuMTQtcmMyLW1pcHNjdnMtNEtTeC9hcmNoL21pcHMvbW0vY2FjaGUuYwotLS0gbGludXgtMi42
LjE0LXJjMi1taXBzY3ZzL2FyY2gvbWlwcy9tbS9jYWNoZS5jCTIwMDUtMDctMDYgMTQ6MDg6MTQu
MDAwMDAwMDAwICswMjAwCisrKyBsaW51eC0yLjYuMTQtcmMyLW1pcHNjdnMtNEtTeC9hcmNoL21p
cHMvbW0vY2FjaGUuYwkyMDA1LTEwLTA0IDA5OjQ2OjU2LjAwMDAwMDAwMCArMDIwMApAQCAtMTIw
LDcgKzEyMCw4IEBAIHZvaWQgX19pbml0IGNwdV9jYWNoZV9pbml0KHZvaWQpCiAgICAgZGVmaW5l
ZChDT05GSUdfQ1BVX05FVkFEQSkgfHwgZGVmaW5lZChDT05GSUdfQ1BVX1I1NDMyKSAgfHwgXAog
ICAgIGRlZmluZWQoQ09ORklHX0NQVV9SNTUwMCkgIHx8IGRlZmluZWQoQ09ORklHX0NQVV9NSVBT
MzJfUjEpIHx8IFwKICAgICBkZWZpbmVkKENPTkZJR19DUFVfTUlQUzY0X1IxKSB8fCBkZWZpbmVk
KENPTkZJR19DUFVfVFg0OVhYKSB8fCBcCi0gICAgZGVmaW5lZChDT05GSUdfQ1BVX1JNNzAwMCkg
fHwgZGVmaW5lZChDT05GSUdfQ1BVX1JNOTAwMCkKKyAgICBkZWZpbmVkKENPTkZJR19DUFVfUk03
MDAwKSB8fCBkZWZpbmVkKENPTkZJR19DUFVfUk05MDAwKSB8fCBcCisgICAgZGVmaW5lZChDT05G
SUdfQ1BVXzRLU0MpICAgfHwgZGVmaW5lZChDT05GSUdfQ1BVXzRLU0QpCiAJCWxkX21tdV9yNHh4
MCgpOwogI2VuZGlmCiAJfSBlbHNlIHN3aXRjaCAoY3VycmVudF9jcHVfZGF0YS5jcHV0eXBlKSB7
CmRpZmYgLU51cnAgbGludXgtMi42LjE0LXJjMi1taXBzY3ZzL2FyY2gvbWlwcy9tbS9NYWtlZmls
ZSBsaW51eC0yLjYuMTQtcmMyLW1pcHNjdnMtNEtTeC9hcmNoL21pcHMvbW0vTWFrZWZpbGUKLS0t
IGxpbnV4LTIuNi4xNC1yYzItbWlwc2N2cy9hcmNoL21pcHMvbW0vTWFrZWZpbGUJMjAwNS0wNy0x
NCAxNDowNTowNi4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIuNi4xNC1yYzItbWlwc2N2cy00
S1N4L2FyY2gvbWlwcy9tbS9NYWtlZmlsZQkyMDA1LTEwLTA0IDA5OjQ1OjE3LjAwMDAwMDAwMCAr
MDIwMApAQCAtMjYsNiArMjYsOCBAQCBvYmotJChDT05GSUdfQ1BVX1NCMSkJCSs9IGMtc2IxLm8g
Y2Vyci1zCiBvYmotJChDT05GSUdfQ1BVX1RYMzlYWCkJKz0gYy10eDM5Lm8gcGctcjRrLm8gdGxi
LXIzay5vCiBvYmotJChDT05GSUdfQ1BVX1RYNDlYWCkJKz0gYy1yNGsubyBjZXgtZ2VuLm8gcGct
cjRrLm8gdGxiLXI0ay5vCiBvYmotJChDT05GSUdfQ1BVX1ZSNDFYWCkJKz0gYy1yNGsubyBjZXgt
Z2VuLm8gcGctcjRrLm8gdGxiLXI0ay5vCitvYmotJChDT05GSUdfQ1BVXzRLU0MpCQkrPSBjLXI0
ay5vIGNleC1nZW4ubyBwZy1yNGsubyB0bGItcjRrLm8KK29iai0kKENPTkZJR19DUFVfNEtTRCkJ
CSs9IGMtcjRrLm8gY2V4LWdlbi5vIHBnLXI0ay5vIHRsYi1yNGsubwogCiBvYmotJChDT05GSUdf
SVAyMl9DUFVfU0NBQ0hFKQkrPSBzYy1pcDIyLm8KIG9iai0kKENPTkZJR19SNTAwMF9DUFVfU0NB
Q0hFKSAgKz0gc2MtcjVrLm8KZGlmZiAtTnVycCBsaW51eC0yLjYuMTQtcmMyLW1pcHNjdnMvaW5j
bHVkZS9hc20tbWlwcy9tb2R1bGUuaCBsaW51eC0yLjYuMTQtcmMyLW1pcHNjdnMtNEtTeC9pbmNs
dWRlL2FzbS1taXBzL21vZHVsZS5oCi0tLSBsaW51eC0yLjYuMTQtcmMyLW1pcHNjdnMvaW5jbHVk
ZS9hc20tbWlwcy9tb2R1bGUuaAkyMDA1LTA5LTE0IDEyOjM1OjM3LjAwMDAwMDAwMCArMDIwMAor
KysgbGludXgtMi42LjE0LXJjMi1taXBzY3ZzLTRLU3gvaW5jbHVkZS9hc20tbWlwcy9tb2R1bGUu
aAkyMDA1LTEwLTA0IDA5OjU1OjM0LjAwMDAwMDAwMCArMDIwMApAQCAtMTEzLDcgKzExMywxMSBA
QCBzZWFyY2hfbW9kdWxlX2RiZXRhYmxlcyh1bnNpZ25lZCBsb25nIGFkCiAjZGVmaW5lIE1PRFVM
RV9QUk9DX0ZBTUlMWSAiUk05MDAwIgogI2VsaWYgZGVmaW5lZCBDT05GSUdfQ1BVX1NCMQogI2Rl
ZmluZSBNT0RVTEVfUFJPQ19GQU1JTFkgIlNCMSIKLSNlbGlmCisjZWxpZiBkZWZpbmVkIENPTkZJ
R19DUFVfNEtTQworI2RlZmluZSBNT0RVTEVfUFJPQ19GQU1JTFkgIjRLU0MiCisjZWxpZiBkZWZp
bmVkIENPTkZJR19DUFVfNEtTRAorI2RlZmluZSBNT0RVTEVfUFJPQ19GQU1JTFkgIjRLU0QiCisj
ZWxzZQogI2Vycm9yIE1PRFVMRV9QUk9DX0ZBTUlMWSB1bmRlZmluZWQgZm9yIHlvdXIgcHJvY2Vz
c29yIGNvbmZpZ3VyYXRpb24KICNlbmRpZgogCg==
------=_Part_3451_12254408.1128415784694--

From macro@linux-mips.org Tue Oct  4 12:34:09 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 04 Oct 2005 12:34:26 +0100 (BST)
Received: from pollux.ds.pg.gda.pl ([153.19.208.7]:25361 "EHLO
	pollux.ds.pg.gda.pl") by ftp.linux-mips.org with ESMTP
	id S8133464AbVJDLeJ (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 4 Oct 2005 12:34:09 +0100
Received: from localhost (localhost [127.0.0.1])
	by pollux.ds.pg.gda.pl (Postfix) with ESMTP
	id 2B80CF59BA; Tue,  4 Oct 2005 13:34:04 +0200 (CEST)
Received: from pollux.ds.pg.gda.pl ([127.0.0.1])
 by localhost (pollux [127.0.0.1]) (amavisd-new, port 10024) with ESMTP
 id 27403-05; Tue,  4 Oct 2005 13:34:04 +0200 (CEST)
Received: from piorun.ds.pg.gda.pl (piorun.ds.pg.gda.pl [153.19.208.8])
	by pollux.ds.pg.gda.pl (Postfix) with ESMTP
	id E2C5FF5995; Tue,  4 Oct 2005 13:34:03 +0200 (CEST)
Received: from blysk.ds.pg.gda.pl (macro@blysk.ds.pg.gda.pl [153.19.208.6])
	by piorun.ds.pg.gda.pl (8.13.3/8.13.1) with ESMTP id j94BY6hX029176;
	Tue, 4 Oct 2005 13:34:07 +0200
Date:	Tue, 4 Oct 2005 12:34:12 +0100 (BST)
From:	"Maciej W. Rozycki" <macro@linux-mips.org>
To:	Franck <vagabon.xyz@gmail.com>
Cc:	Ralf Baechle <ralf@linux-mips.org>, linux-mips@linux-mips.org
Subject: Re: [PATCH] Add support for 4KS cpu.
In-Reply-To: <cda58cb80510040149p690397afo@mail.gmail.com>
Message-ID: <Pine.LNX.4.61L.0510041219500.10696@blysk.ds.pg.gda.pl>
References: <cda58cb80510040149p690397afo@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
X-Virus-Scanned: ClamAV 0.86.2/1109/Tue Oct  4 00:06:28 2005 on piorun.ds.pg.gda.pl
X-Virus-Status:	Clean
X-Virus-Scanned: by amavisd-new at pollux.ds.pg.gda.pl
Return-Path: <macro@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9128
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: macro@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Tue, 4 Oct 2005, Franck wrote:

> This patch adds support for both 4ksc and 4ksd cpus. These cpu are
> mainly used in embedded system such as smartcard or point of sell
> devices as they provide some extra security features.

 Please send patches inline.

 Apart from the change to "arch/mips/kernel/cpu-probe.c", which is useful, 
what's the benefit of the changes?  Specifically how is selecting e.g. 
"CPU_4KSC" meant to be different from "CPU_MIPS32_R2"?  Do you want to 
make GCC tune your code according to a specific's CPU pipeline 
description?  If so, then it should probably be done a bit differently and 
there is actually no need to differentiate between specific members of the 
4K family.

> Signed-off-by: Franck <vagabon.xyz@gmail.com>

 You should rather use your real name here.  [Hmm, why am I responding to 
an anonym in the first place?...]

  Maciej

From kevink@mips.com Tue Oct  4 13:37:33 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 04 Oct 2005 13:37:50 +0100 (BST)
Received: from 209-232-97-206.ded.pacbell.net ([209.232.97.206]:44786 "EHLO
	dns0.mips.com") by ftp.linux-mips.org with ESMTP id S8133467AbVJDMhd
	(ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 4 Oct 2005 13:37:33 +0100
Received: from mercury.mips.com (sbcns-dmz [209.232.97.193])
	by dns0.mips.com (8.12.11/8.12.11) with ESMTP id j94CbMSQ029661;
	Tue, 4 Oct 2005 05:37:23 -0700 (PDT)
Received: from [192.168.236.16] (grendel [192.168.236.16])
	by mercury.mips.com (8.12.9/8.12.11) with ESMTP id j94CbK17028946;
	Tue, 4 Oct 2005 05:37:21 -0700 (PDT)
Message-ID: <434277D5.1090603@mips.com>
Date:	Tue, 04 Oct 2005 14:38:45 +0200
From:	"Kevin D. Kissell" <kevink@mips.com>
User-Agent: Mozilla Thunderbird 1.0.6 (X11/20050716)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	"Maciej W. Rozycki" <macro@linux-mips.org>
CC:	Franck <vagabon.xyz@gmail.com>, Ralf Baechle <ralf@linux-mips.org>,
	linux-mips@linux-mips.org
Subject: Re: [PATCH] Add support for 4KS cpu.
References: <cda58cb80510040149p690397afo@mail.gmail.com> <Pine.LNX.4.61L.0510041219500.10696@blysk.ds.pg.gda.pl>
In-Reply-To: <Pine.LNX.4.61L.0510041219500.10696@blysk.ds.pg.gda.pl>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Scanned-By: MIMEDefang 2.39
Return-Path: <kevink@mips.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9129
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: kevink@mips.com
Precedence: bulk
X-list: linux-mips

FWIW, the 4KSc is a strict superset of the 4Kc (anticipating
*some* of the Release 2 features, but not requiring them to be
used) and the 4KSd is a strict superset of the 4KE.  I would
not recommend configuring CPU_MIPS32_R2 for the 4KSc.

Both of these cores have "SmartMIPS" MMUs, which allow for
orthogonal control of Read/Write/Execute permissions on pages,
using a couple of additional bits at the top of the EntryLo
registers - which in turn limit the maximum usable physical
address space. They also allow for variable granularity of
the PageMask register, to support 1K pages.  But these features
are all done in a way that's backward-compatible with MIPS32,
and the default reset behavior makes them look like 4Kc/4KEc.

They also have some physical security and cryptography accelleration
features, some of which use extended CPU state that would
require some kernel context management support if anyone wanted
to actually use them in Linux applications. The real point of
having a CPU_4KSC config flag would be to enable building-in
such support.

I'm being a teeny bit vague about this, because I'm not 100%
certain that all the details of "SmartMIPS" have been published.

		Regards,

		Kevin K.

Maciej W. Rozycki wrote:
> On Tue, 4 Oct 2005, Franck wrote:
> 
> 
>>This patch adds support for both 4ksc and 4ksd cpus. These cpu are
>>mainly used in embedded system such as smartcard or point of sell
>>devices as they provide some extra security features.
> 
> 
>  Please send patches inline.
> 
>  Apart from the change to "arch/mips/kernel/cpu-probe.c", which is useful, 
> what's the benefit of the changes?  Specifically how is selecting e.g. 
> "CPU_4KSC" meant to be different from "CPU_MIPS32_R2"?  Do you want to 
> make GCC tune your code according to a specific's CPU pipeline 
> description?  If so, then it should probably be done a bit differently and 
> there is actually no need to differentiate between specific members of the 
> 4K family.
> 
> 
>>Signed-off-by: Franck <vagabon.xyz@gmail.com>
> 
> 
>  You should rather use your real name here.  [Hmm, why am I responding to 
> an anonym in the first place?...]
> 
>   Maciej
> 


From vagabon.xyz@gmail.com Tue Oct  4 14:10:35 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 04 Oct 2005 14:10:52 +0100 (BST)
Received: from zproxy.gmail.com ([64.233.162.205]:51419 "EHLO zproxy.gmail.com")
	by ftp.linux-mips.org with ESMTP id S8133472AbVJDNKf convert rfc822-to-8bit
	(ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 4 Oct 2005 14:10:35 +0100
Received: by zproxy.gmail.com with SMTP id j2so162845nzf
        for <linux-mips@linux-mips.org>; Tue, 04 Oct 2005 06:10:29 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:message-id:date:from:reply-to:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references;
        b=NjtO6zC9RRvKLp69D0QSG+uwYuPchrTdI4etYzQ0Zg6a/OQEcUxiCrWE+bq6vigIBAvvbgjR6DoILyE8Ch8f2vRQa4Lb2oY6eGDrtgT7f61lsfom2nioqTYd9GVGiQkHFMwI7BxaYpo4JGP29UucgF2M+VId6nIXJaGyxoGQsvI=
Received: by 10.36.97.9 with SMTP id u9mr200135nzb;
        Tue, 04 Oct 2005 06:10:28 -0700 (PDT)
Received: by 10.36.49.3 with HTTP; Tue, 4 Oct 2005 06:10:28 -0700 (PDT)
Message-ID: <cda58cb80510040610k1a7f430fn@mail.gmail.com>
Date:	Tue, 4 Oct 2005 15:10:28 +0200
From:	Franck <vagabon.xyz@gmail.com>
Reply-To: Franck <vagabon.xyz@gmail.com>
To:	"Maciej W. Rozycki" <macro@linux-mips.org>
Subject: Re: [PATCH] Add support for 4KS cpu.
Cc:	Ralf Baechle <ralf@linux-mips.org>, linux-mips@linux-mips.org
In-Reply-To: <Pine.LNX.4.61L.0510041219500.10696@blysk.ds.pg.gda.pl>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8BIT
Content-Disposition: inline
References: <cda58cb80510040149p690397afo@mail.gmail.com>
	 <Pine.LNX.4.61L.0510041219500.10696@blysk.ds.pg.gda.pl>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9130
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

2005/10/4, Maciej W. Rozycki <macro@linux-mips.org>:
> On Tue, 4 Oct 2005, Franck wrote:
>
> > This patch adds support for both 4ksc and 4ksd cpus. These cpu are
> > mainly used in embedded system such as smartcard or point of sell
> > devices as they provide some extra security features.
>
>  Please send patches inline.

I can see it inlined...what email viewer are you using ?

>
>  Apart from the change to "arch/mips/kernel/cpu-probe.c", which is useful,
> what's the benefit of the changes?  Specifically how is selecting e.g.
> "CPU_4KSC" meant to be different from "CPU_MIPS32_R2"?  Do you want to
> make GCC tune your code according to a specific's CPU pipeline
> description?  If so, then it should probably be done a bit differently and
> there is actually no need to differentiate between specific members of the
> 4K family.
>

True, but we may have some differences in future. For example, they
both implements smart mips instructions. See options passed to GCC in
mips Makefile, they're different from CPU_MIPS32_R2 ones. They also
have a couple of instructions very useful for cryptographic
algorithms. And have some extra bits in TLB to protect pages from
being execute for example. These are the main differences that I can
remember. Big fat warning: I sent all support I have done for these
cpu, _not_ more, _not_ less. I agree it's almost nothing but it's a
start...

> > Signed-off-by: Franck <vagabon.xyz@gmail.com>
>

Ok I'll change it.

Thanks
--
               Franck

From macro@linux-mips.org Tue Oct  4 14:29:33 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 04 Oct 2005 14:29:48 +0100 (BST)
Received: from pollux.ds.pg.gda.pl ([153.19.208.7]:54536 "EHLO
	pollux.ds.pg.gda.pl") by ftp.linux-mips.org with ESMTP
	id S8133463AbVJDN3d (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 4 Oct 2005 14:29:33 +0100
Received: from localhost (localhost [127.0.0.1])
	by pollux.ds.pg.gda.pl (Postfix) with ESMTP
	id DF498F59BA; Tue,  4 Oct 2005 15:29:27 +0200 (CEST)
Received: from pollux.ds.pg.gda.pl ([127.0.0.1])
 by localhost (pollux [127.0.0.1]) (amavisd-new, port 10024) with ESMTP
 id 31526-05; Tue,  4 Oct 2005 15:29:27 +0200 (CEST)
Received: from piorun.ds.pg.gda.pl (piorun.ds.pg.gda.pl [153.19.208.8])
	by pollux.ds.pg.gda.pl (Postfix) with ESMTP
	id A8404E1CA1; Tue,  4 Oct 2005 15:29:27 +0200 (CEST)
Received: from blysk.ds.pg.gda.pl (macro@blysk.ds.pg.gda.pl [153.19.208.6])
	by piorun.ds.pg.gda.pl (8.13.3/8.13.1) with ESMTP id j94DTVAF003188;
	Tue, 4 Oct 2005 15:29:31 +0200
Date:	Tue, 4 Oct 2005 14:29:38 +0100 (BST)
From:	"Maciej W. Rozycki" <macro@linux-mips.org>
To:	"Kevin D. Kissell" <kevink@mips.com>
Cc:	Franck <vagabon.xyz@gmail.com>, Ralf Baechle <ralf@linux-mips.org>,
	linux-mips@linux-mips.org
Subject: Re: [PATCH] Add support for 4KS cpu.
In-Reply-To: <434277D5.1090603@mips.com>
Message-ID: <Pine.LNX.4.61L.0510041358300.10696@blysk.ds.pg.gda.pl>
References: <cda58cb80510040149p690397afo@mail.gmail.com>
 <Pine.LNX.4.61L.0510041219500.10696@blysk.ds.pg.gda.pl> <434277D5.1090603@mips.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
X-Virus-Scanned: ClamAV 0.86.2/1109/Tue Oct  4 00:06:28 2005 on piorun.ds.pg.gda.pl
X-Virus-Status:	Clean
X-Virus-Scanned: by amavisd-new at pollux.ds.pg.gda.pl
Return-Path: <macro@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9131
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: macro@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Tue, 4 Oct 2005, Kevin D. Kissell wrote:

> FWIW, the 4KSc is a strict superset of the 4Kc (anticipating
> *some* of the Release 2 features, but not requiring them to be
> used) and the 4KSd is a strict superset of the 4KE.  I would
> not recommend configuring CPU_MIPS32_R2 for the 4KSc.

 Well, the patch asked GCC to use the instruction set of the "4kec" CPU 
for both (and also the "mips32r2" ISA, but that's overridden by the 
former), so it must have been incorrect in the first place -- I have only 
referred to this.

> They also have some physical security and cryptography accelleration
> features, some of which use extended CPU state that would
> require some kernel context management support if anyone wanted
> to actually use them in Linux applications. The real point of
> having a CPU_4KSC config flag would be to enable building-in
> such support.

 This would make sense, but I'm afraid the proposal was far from that... 

  Maciej

From kevink@mips.com Tue Oct  4 14:53:35 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 04 Oct 2005 14:53:51 +0100 (BST)
Received: from 209-232-97-206.ded.pacbell.net ([209.232.97.206]:2291 "EHLO
	dns0.mips.com") by ftp.linux-mips.org with ESMTP id S8133472AbVJDNxf
	(ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 4 Oct 2005 14:53:35 +0100
Received: from mercury.mips.com (sbcns-dmz [209.232.97.193])
	by dns0.mips.com (8.12.11/8.12.11) with ESMTP id j94DrOLM029928;
	Tue, 4 Oct 2005 06:53:24 -0700 (PDT)
Received: from [192.168.236.16] (grendel [192.168.236.16])
	by mercury.mips.com (8.12.9/8.12.11) with ESMTP id j94DrO17000018;
	Tue, 4 Oct 2005 06:53:25 -0700 (PDT)
Message-ID: <434289A7.50007@mips.com>
Date:	Tue, 04 Oct 2005 15:54:47 +0200
From:	"Kevin D. Kissell" <kevink@mips.com>
User-Agent: Mozilla Thunderbird 1.0.6 (X11/20050716)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	"Maciej W. Rozycki" <macro@linux-mips.org>
CC:	Franck <vagabon.xyz@gmail.com>, Ralf Baechle <ralf@linux-mips.org>,
	linux-mips@linux-mips.org
Subject: Re: [PATCH] Add support for 4KS cpu.
References: <cda58cb80510040149p690397afo@mail.gmail.com> <Pine.LNX.4.61L.0510041219500.10696@blysk.ds.pg.gda.pl> <434277D5.1090603@mips.com> <Pine.LNX.4.61L.0510041358300.10696@blysk.ds.pg.gda.pl>
In-Reply-To: <Pine.LNX.4.61L.0510041358300.10696@blysk.ds.pg.gda.pl>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Scanned-By: MIMEDefang 2.39
Return-Path: <kevink@mips.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9132
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: kevink@mips.com
Precedence: bulk
X-list: linux-mips

Maciej W. Rozycki wrote:
> On Tue, 4 Oct 2005, Kevin D. Kissell wrote:
> 
> 
>>FWIW, the 4KSc is a strict superset of the 4Kc (anticipating
>>*some* of the Release 2 features, but not requiring them to be
>>used) and the 4KSd is a strict superset of the 4KE.  I would
>>not recommend configuring CPU_MIPS32_R2 for the 4KSc.
> 
> 
>  Well, the patch asked GCC to use the instruction set of the "4kec" CPU 
> for both (and also the "mips32r2" ISA, but that's overridden by the 
> former), so it must have been incorrect in the first place

Which was sort-of why I replied.  In particular, the MIPS32R2 bitfield
instructions will probably cause a reserved instruction fault on a 4KSc.

	Regards,

	Kevin K.

From macro@linux-mips.org Tue Oct  4 14:54:17 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 04 Oct 2005 14:54:36 +0100 (BST)
Received: from pollux.ds.pg.gda.pl ([153.19.208.7]:8206 "EHLO
	pollux.ds.pg.gda.pl") by ftp.linux-mips.org with ESMTP
	id S3458576AbVJDNyN (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 4 Oct 2005 14:54:13 +0100
Received: from localhost (localhost [127.0.0.1])
	by pollux.ds.pg.gda.pl (Postfix) with ESMTP
	id EBC7EF5A24; Tue,  4 Oct 2005 15:54:08 +0200 (CEST)
Received: from pollux.ds.pg.gda.pl ([127.0.0.1])
 by localhost (pollux [127.0.0.1]) (amavisd-new, port 10024) with ESMTP
 id 08045-10; Tue,  4 Oct 2005 15:54:08 +0200 (CEST)
Received: from piorun.ds.pg.gda.pl (piorun.ds.pg.gda.pl [153.19.208.8])
	by pollux.ds.pg.gda.pl (Postfix) with ESMTP
	id ABAF6F5A22; Tue,  4 Oct 2005 15:54:08 +0200 (CEST)
Received: from blysk.ds.pg.gda.pl (macro@blysk.ds.pg.gda.pl [153.19.208.6])
	by piorun.ds.pg.gda.pl (8.13.3/8.13.1) with ESMTP id j94DsCKg004509;
	Tue, 4 Oct 2005 15:54:12 +0200
Date:	Tue, 4 Oct 2005 14:54:20 +0100 (BST)
From:	"Maciej W. Rozycki" <macro@linux-mips.org>
To:	Franck <vagabon.xyz@gmail.com>
Cc:	Ralf Baechle <ralf@linux-mips.org>, linux-mips@linux-mips.org
Subject: Re: [PATCH] Add support for 4KS cpu.
In-Reply-To: <cda58cb80510040610k1a7f430fn@mail.gmail.com>
Message-ID: <Pine.LNX.4.61L.0510041430120.10696@blysk.ds.pg.gda.pl>
References: <cda58cb80510040149p690397afo@mail.gmail.com> 
 <Pine.LNX.4.61L.0510041219500.10696@blysk.ds.pg.gda.pl>
 <cda58cb80510040610k1a7f430fn@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
X-Virus-Scanned: ClamAV 0.86.2/1109/Tue Oct  4 00:06:28 2005 on piorun.ds.pg.gda.pl
X-Virus-Status:	Clean
X-Virus-Scanned: by amavisd-new at pollux.ds.pg.gda.pl
Return-Path: <macro@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9133
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: macro@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Tue, 4 Oct 2005, Franck wrote:

> >  Please send patches inline.
> 
> I can see it inlined...what email viewer are you using ?

 Well, inlined means straight in the body rather than as a MIME attachment 
-- even if you use "Content-Disposition: inline", it's still one.

> True, but we may have some differences in future. For example, they
> both implements smart mips instructions. See options passed to GCC in
> mips Makefile, they're different from CPU_MIPS32_R2 ones. They also
> have a couple of instructions very useful for cryptographic

 See my other comment in this thread.  As to the SmartMIPS/crypto 
instructions -- unless they are going to be emitted by GCC for the kernel 
build (which I seriously doubt), there is no point in enabling them.

> algorithms. And have some extra bits in TLB to protect pages from
> being execute for example. These are the main differences that I can

 Now that may be of potential interest of the kernel, but again, that's in 
principle probably not specific to these processors, so that should be a 
separate option; if possible one selected at the run time only (hint, 
hint!).

> remember. Big fat warning: I sent all support I have done for these
> cpu, _not_ more, _not_ less. I agree it's almost nothing but it's a
> start...

 Well, it's probably a bit too early for inclusion, but it's certainly not 
for a review.  By sending changes here for discussion early you may avoid 
a lot of hassle later when you may discover a major update is required for 
them to be accepted.  Good luck!

  Maciej

From ralf@linux-mips.org Tue Oct  4 15:07:04 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 04 Oct 2005 15:07:22 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:7446 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133473AbVJDOHD (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 4 Oct 2005 15:07:03 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j94E6tdP014120;
	Tue, 4 Oct 2005 15:06:55 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j94E6s3v014112;
	Tue, 4 Oct 2005 15:06:54 +0100
Date:	Tue, 4 Oct 2005 15:06:54 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	Franck <vagabon.xyz@gmail.com>
Cc:	linux-mips@linux-mips.org
Subject: Re: [PATCH] Add support for 4KS cpu.
Message-ID: <20051004140654.GC2725@linux-mips.org>
References: <cda58cb80510040149p690397afo@mail.gmail.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <cda58cb80510040149p690397afo@mail.gmail.com>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9134
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Tue, Oct 04, 2005 at 10:49:44AM +0200, Franck wrote:

> This patch adds support for both 4ksc and 4ksd cpus. These cpu are
> mainly used in embedded system such as smartcard or point of sell
> devices as they provide some extra security features.

So I've applied the cpu-probe.c part.

Thanks,

  Ralf

From ralf@linux-mips.org Tue Oct  4 15:17:27 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 04 Oct 2005 15:17:43 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:18450 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133473AbVJDOR1 (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 4 Oct 2005 15:17:27 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j94EHKvj014452;
	Tue, 4 Oct 2005 15:17:20 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j94EHKas014451;
	Tue, 4 Oct 2005 15:17:20 +0100
Date:	Tue, 4 Oct 2005 15:17:20 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	Franck <vagabon.xyz@gmail.com>
Cc:	"Maciej W. Rozycki" <macro@linux-mips.org>,
	linux-mips@linux-mips.org
Subject: Re: [PATCH] Add support for 4KS cpu.
Message-ID: <20051004141720.GD2725@linux-mips.org>
References: <cda58cb80510040149p690397afo@mail.gmail.com> <Pine.LNX.4.61L.0510041219500.10696@blysk.ds.pg.gda.pl> <cda58cb80510040610k1a7f430fn@mail.gmail.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <cda58cb80510040610k1a7f430fn@mail.gmail.com>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9135
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Tue, Oct 04, 2005 at 03:10:28PM +0200, Franck wrote:

> > > This patch adds support for both 4ksc and 4ksd cpus. These cpu are
> > > mainly used in embedded system such as smartcard or point of sell
> > > devices as they provide some extra security features.
> >
> >  Please send patches inline.
> 
> I can see it inlined...what email viewer are you using ?

The primary reason is that patches will be quoted and commented in email
just like text.  The attachment handling in most mail clients makes this
unnecessarily painful.

  Ralf

From vagabon.xyz@gmail.com Tue Oct  4 16:10:58 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 04 Oct 2005 16:11:25 +0100 (BST)
Received: from zproxy.gmail.com ([64.233.162.205]:64899 "EHLO zproxy.gmail.com")
	by ftp.linux-mips.org with ESMTP id S8133466AbVJDPK6 convert rfc822-to-8bit
	(ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 4 Oct 2005 16:10:58 +0100
Received: by zproxy.gmail.com with SMTP id j2so184197nzf
        for <linux-mips@linux-mips.org>; Tue, 04 Oct 2005 08:10:52 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:message-id:date:from:reply-to:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references;
        b=azPCltp/P86HLYt955oXYKpYS2gMtU3tF3sn5UsK/rB0kubopNBGCI090+g1X89ADFw5/OjED87zcx+8nv1wHCu7xJtqw2+JTaT6noTT2zXjXi43bLtZnBOvCFEly0B/lnjnuF97Qm6tt2GufutVReg2WxtTRQradnkVYk91Z00=
Received: by 10.37.18.46 with SMTP id v46mr305945nzi;
        Tue, 04 Oct 2005 08:10:52 -0700 (PDT)
Received: by 10.36.49.3 with HTTP; Tue, 4 Oct 2005 08:10:52 -0700 (PDT)
Message-ID: <cda58cb80510040810y286b06bcx@mail.gmail.com>
Date:	Tue, 4 Oct 2005 17:10:52 +0200
From:	Franck <vagabon.xyz@gmail.com>
Reply-To: Franck <vagabon.xyz@gmail.com>
To:	"Maciej W. Rozycki" <macro@linux-mips.org>
Subject: Re: [PATCH] Add support for 4KS cpu.
Cc:	Ralf Baechle <ralf@linux-mips.org>, linux-mips@linux-mips.org
In-Reply-To: <Pine.LNX.4.61L.0510041430120.10696@blysk.ds.pg.gda.pl>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8BIT
Content-Disposition: inline
References: <cda58cb80510040149p690397afo@mail.gmail.com>
	 <Pine.LNX.4.61L.0510041219500.10696@blysk.ds.pg.gda.pl>
	 <cda58cb80510040610k1a7f430fn@mail.gmail.com>
	 <Pine.LNX.4.61L.0510041430120.10696@blysk.ds.pg.gda.pl>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9136
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

2005/10/4, Maciej W. Rozycki <macro@linux-mips.org>:
>  See my other comment in this thread.  As to the SmartMIPS/crypto
> instructions -- unless they are going to be emitted by GCC for the kernel
> build (which I seriously doubt), there is no point in enabling them.
>

some assembly code could...

> > algorithms. And have some extra bits in TLB to protect pages from
> > being execute for example. These are the main differences that I can
>
>  Now that may be of potential interest of the kernel, but again, that's in
> principle probably not specific to these processors,
>

hmm, I'm not an expert in MIPS cpu as you guys, so can you give me an
example of others processors that have such TLB features ?

> > remember. Big fat warning: I sent all support I have done for these
> > cpu, _not_ more, _not_ less. I agree it's almost nothing but it's a
> > start...
>
>  Well, it's probably a bit too early for inclusion, but it's certainly not
> for a review.  By sending changes here for discussion early you may avoid
> a lot of hassle later when you may discover a major update is required for
> them to be accepted.  Good luck!

Actually Ralf asked for it in a previous thread.

Thanks
--
               Franck

From vagabon.xyz@gmail.com Tue Oct  4 16:18:38 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 04 Oct 2005 16:18:55 +0100 (BST)
Received: from zproxy.gmail.com ([64.233.162.192]:49796 "EHLO zproxy.gmail.com")
	by ftp.linux-mips.org with ESMTP id S8133474AbVJDPSi convert rfc822-to-8bit
	(ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 4 Oct 2005 16:18:38 +0100
Received: by zproxy.gmail.com with SMTP id j2so185772nzf
        for <linux-mips@linux-mips.org>; Tue, 04 Oct 2005 08:18:26 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:message-id:date:from:reply-to:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references;
        b=dYStpcyIUwIWUsQTElWd8e+TncQNQmdpKN9VuLdj/q9EfLiUmXiyjRt3x/0HPa3SiLVWsIdNpYKc2tog7EscYXfdE7byLy1WzVBGMzEcMDdf7WZzqQa2uWws2mMZQCC0WRl8sdqnBROiPrm1r/hX/qU5ZvzvdzEQ6nWn40ASlyY=
Received: by 10.36.224.42 with SMTP id w42mr309975nzg;
        Tue, 04 Oct 2005 08:18:26 -0700 (PDT)
Received: by 10.36.49.3 with HTTP; Tue, 4 Oct 2005 08:18:26 -0700 (PDT)
Message-ID: <cda58cb80510040818v6d93fe53w@mail.gmail.com>
Date:	Tue, 4 Oct 2005 17:18:26 +0200
From:	Franck <vagabon.xyz@gmail.com>
Reply-To: Franck <vagabon.xyz@gmail.com>
To:	"Kevin D. Kissell" <kevink@mips.com>
Subject: Re: [PATCH] Add support for 4KS cpu.
Cc:	"Maciej W. Rozycki" <macro@linux-mips.org>,
	Ralf Baechle <ralf@linux-mips.org>, linux-mips@linux-mips.org
In-Reply-To: <434289A7.50007@mips.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8BIT
Content-Disposition: inline
References: <cda58cb80510040149p690397afo@mail.gmail.com>
	 <Pine.LNX.4.61L.0510041219500.10696@blysk.ds.pg.gda.pl>
	 <434277D5.1090603@mips.com>
	 <Pine.LNX.4.61L.0510041358300.10696@blysk.ds.pg.gda.pl>
	 <434289A7.50007@mips.com>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9137
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

2005/10/4, Kevin D. Kissell <kevink@mips.com>:
> >  Well, the patch asked GCC to use the instruction set of the "4kec" CPU
> > for both (and also the "mips32r2" ISA, but that's overridden by the
> > former), so it must have been incorrect in the first place
>
> Which was sort-of why I replied.  In particular, the MIPS32R2 bitfield
> instructions will probably cause a reserved instruction fault on a 4KSc.
>

should I pass these options to GCC for 4KSc ?

cflags-$(CONFIG_CPU_4KSC)      += \
                       $(call set_gccflags,4kc,mips32r1,r4600,mips3,mips2) \
                       -msmartmips -Wa,--trap

Thanks
--
               Franck

From macro@linux-mips.org Tue Oct  4 17:01:31 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 04 Oct 2005 17:01:51 +0100 (BST)
Received: from pollux.ds.pg.gda.pl ([153.19.208.7]:7949 "EHLO
	pollux.ds.pg.gda.pl") by ftp.linux-mips.org with ESMTP
	id S8133470AbVJDQBb (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 4 Oct 2005 17:01:31 +0100
Received: from localhost (localhost [127.0.0.1])
	by pollux.ds.pg.gda.pl (Postfix) with ESMTP
	id 8ABCAF59C8; Tue,  4 Oct 2005 18:01:24 +0200 (CEST)
Received: from pollux.ds.pg.gda.pl ([127.0.0.1])
 by localhost (pollux [127.0.0.1]) (amavisd-new, port 10024) with ESMTP
 id 23821-01; Tue,  4 Oct 2005 18:01:24 +0200 (CEST)
Received: from piorun.ds.pg.gda.pl (piorun.ds.pg.gda.pl [153.19.208.8])
	by pollux.ds.pg.gda.pl (Postfix) with ESMTP
	id 49F69E1CD3; Tue,  4 Oct 2005 18:01:24 +0200 (CEST)
Received: from blysk.ds.pg.gda.pl (macro@blysk.ds.pg.gda.pl [153.19.208.6])
	by piorun.ds.pg.gda.pl (8.13.3/8.13.1) with ESMTP id j94G1ST0012171;
	Tue, 4 Oct 2005 18:01:28 +0200
Date:	Tue, 4 Oct 2005 17:01:37 +0100 (BST)
From:	"Maciej W. Rozycki" <macro@linux-mips.org>
To:	Franck <vagabon.xyz@gmail.com>
Cc:	"Kevin D. Kissell" <kevink@mips.com>,
	Ralf Baechle <ralf@linux-mips.org>, linux-mips@linux-mips.org
Subject: Re: [PATCH] Add support for 4KS cpu.
In-Reply-To: <cda58cb80510040818v6d93fe53w@mail.gmail.com>
Message-ID: <Pine.LNX.4.61L.0510041651150.10696@blysk.ds.pg.gda.pl>
References: <cda58cb80510040149p690397afo@mail.gmail.com> 
 <Pine.LNX.4.61L.0510041219500.10696@blysk.ds.pg.gda.pl>  <434277D5.1090603@mips.com>
  <Pine.LNX.4.61L.0510041358300.10696@blysk.ds.pg.gda.pl>  <434289A7.50007@mips.com>
 <cda58cb80510040818v6d93fe53w@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
X-Virus-Scanned: ClamAV 0.86.2/1109/Tue Oct  4 00:06:28 2005 on piorun.ds.pg.gda.pl
X-Virus-Status:	Clean
X-Virus-Scanned: by amavisd-new at pollux.ds.pg.gda.pl
Return-Path: <macro@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9138
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: macro@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Tue, 4 Oct 2005, Franck wrote:

> should I pass these options to GCC for 4KSc ?
> 
> cflags-$(CONFIG_CPU_4KSC)      += \
>                        $(call set_gccflags,4kc,mips32r1,r4600,mips3,mips2) \
>                        -msmartmips -Wa,--trap

 s/mips32r1/mips32/, otherwise OK.

 But since you seem to use SDE, you may as well just use "4ksc" (and 
possibly skip "-msmartmips" as it's implied); similarly for "4ksd".  
Unfortunately documentation on what CPU types are accepted seems to be 
incomplete -- use `gcc -v --help' to see which ones are actually 
available.

  Maciej

From macro@linux-mips.org Tue Oct  4 18:11:21 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 04 Oct 2005 18:11:38 +0100 (BST)
Received: from pollux.ds.pg.gda.pl ([153.19.208.7]:18955 "EHLO
	pollux.ds.pg.gda.pl") by ftp.linux-mips.org with ESMTP
	id S8133474AbVJDRLV (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 4 Oct 2005 18:11:21 +0100
Received: from localhost (localhost [127.0.0.1])
	by pollux.ds.pg.gda.pl (Postfix) with ESMTP
	id D3000F5A0A; Tue,  4 Oct 2005 19:11:11 +0200 (CEST)
Received: from pollux.ds.pg.gda.pl ([127.0.0.1])
 by localhost (pollux [127.0.0.1]) (amavisd-new, port 10024) with ESMTP
 id 12281-05; Tue,  4 Oct 2005 19:11:11 +0200 (CEST)
Received: from piorun.ds.pg.gda.pl (piorun.ds.pg.gda.pl [153.19.208.8])
	by pollux.ds.pg.gda.pl (Postfix) with ESMTP
	id 8E92CE1C7D; Tue,  4 Oct 2005 19:11:11 +0200 (CEST)
Received: from blysk.ds.pg.gda.pl (macro@blysk.ds.pg.gda.pl [153.19.208.6])
	by piorun.ds.pg.gda.pl (8.13.3/8.13.1) with ESMTP id j94HBG22016592;
	Tue, 4 Oct 2005 19:11:16 +0200
Date:	Tue, 4 Oct 2005 18:11:26 +0100 (BST)
From:	"Maciej W. Rozycki" <macro@linux-mips.org>
To:	Franck <vagabon.xyz@gmail.com>
Cc:	Ralf Baechle <ralf@linux-mips.org>, linux-mips@linux-mips.org
Subject: Re: [PATCH] Add support for 4KS cpu.
In-Reply-To: <cda58cb80510040810y286b06bcx@mail.gmail.com>
Message-ID: <Pine.LNX.4.61L.0510041752160.10696@blysk.ds.pg.gda.pl>
References: <cda58cb80510040149p690397afo@mail.gmail.com> 
 <Pine.LNX.4.61L.0510041219500.10696@blysk.ds.pg.gda.pl> 
 <cda58cb80510040610k1a7f430fn@mail.gmail.com> 
 <Pine.LNX.4.61L.0510041430120.10696@blysk.ds.pg.gda.pl>
 <cda58cb80510040810y286b06bcx@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
X-Virus-Scanned: ClamAV 0.86.2/1109/Tue Oct  4 00:06:28 2005 on piorun.ds.pg.gda.pl
X-Virus-Status:	Clean
X-Virus-Scanned: by amavisd-new at pollux.ds.pg.gda.pl
Return-Path: <macro@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9139
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: macro@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Tue, 4 Oct 2005, Franck wrote:

> >  See my other comment in this thread.  As to the SmartMIPS/crypto
> > instructions -- unless they are going to be emitted by GCC for the kernel
> > build (which I seriously doubt), there is no point in enabling them.
> 
> some assembly code could...

 In which case it has to be specific to the configuration used anyway and 
may just locally enable whatever instructions are needed (".set 
smartmips", etc.) and be enabled itself based on configuration, either at 
the run time, if possible and reasonable, or using a CONFIG_* option.

> hmm, I'm not an expert in MIPS cpu as you guys, so can you give me an
> example of others processors that have such TLB features ?

 Well, the extensions are a part of the SmartMIPS ASE, so they are 
certainly not bound to any particular CPU type.

  Maciej

From vagabon.xyz@gmail.com Tue Oct  4 18:33:19 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 04 Oct 2005 18:33:35 +0100 (BST)
Received: from zproxy.gmail.com ([64.233.162.206]:54191 "EHLO zproxy.gmail.com")
	by ftp.linux-mips.org with ESMTP id S8133479AbVJDRdT convert rfc822-to-8bit
	(ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 4 Oct 2005 18:33:19 +0100
Received: by zproxy.gmail.com with SMTP id j2so212696nzf
        for <linux-mips@linux-mips.org>; Tue, 04 Oct 2005 10:33:13 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:message-id:date:from:reply-to:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references;
        b=YTCE7NtIAtCUlUAX/vxctv2AshU52Bl2yi4+eppALyhlYD0ojQnDKX5N007+S9HhTGIpnppSNNoie0Qfy2r7IVfDHEPDK6MDrMBrJmHFx4UOM/4tqzJ6xlV1prMJz5WDesW2Az2m/oDgtpxl8X0FfvPD7d9mHxqQuqGxP+lP1b4=
Received: by 10.36.97.9 with SMTP id u9mr459211nzb;
        Tue, 04 Oct 2005 10:33:13 -0700 (PDT)
Received: by 10.36.49.3 with HTTP; Tue, 4 Oct 2005 10:33:13 -0700 (PDT)
Message-ID: <cda58cb80510041033h2a67f072s@mail.gmail.com>
Date:	Tue, 4 Oct 2005 19:33:13 +0200
From:	Franck <vagabon.xyz@gmail.com>
Reply-To: Franck <vagabon.xyz@gmail.com>
To:	"Maciej W. Rozycki" <macro@linux-mips.org>
Subject: Re: [PATCH] Add support for 4KS cpu.
Cc:	"Kevin D. Kissell" <kevink@mips.com>,
	Ralf Baechle <ralf@linux-mips.org>, linux-mips@linux-mips.org
In-Reply-To: <Pine.LNX.4.61L.0510041651150.10696@blysk.ds.pg.gda.pl>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8BIT
Content-Disposition: inline
References: <cda58cb80510040149p690397afo@mail.gmail.com>
	 <Pine.LNX.4.61L.0510041219500.10696@blysk.ds.pg.gda.pl>
	 <434277D5.1090603@mips.com>
	 <Pine.LNX.4.61L.0510041358300.10696@blysk.ds.pg.gda.pl>
	 <434289A7.50007@mips.com>
	 <cda58cb80510040818v6d93fe53w@mail.gmail.com>
	 <Pine.LNX.4.61L.0510041651150.10696@blysk.ds.pg.gda.pl>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9140
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

2005/10/4, Maciej W. Rozycki <macro@linux-mips.org>:
> On Tue, 4 Oct 2005, Franck wrote:
>
> > should I pass these options to GCC for 4KSc ?
> >
> > cflags-$(CONFIG_CPU_4KSC)      += \
> >                        $(call set_gccflags,4kc,mips32r1,r4600,mips3,mips2) \
> >                        -msmartmips -Wa,--trap
>
>  s/mips32r1/mips32/, otherwise OK.
>
>  But since you seem to use SDE, you may as well just use "4ksc" (and
> possibly skip "-msmartmips" as it's implied); similarly for "4ksd".
> Unfortunately documentation on what CPU types are accepted seems to be
> incomplete -- use `gcc -v --help' to see which ones are actually
> available.
>

maybe something like these are better (I removed last parameter since
it's no more used) ?

cflags-$(CONFIG_CPU_4KSC)       += \
                        $(call set_gccflags,4ksc,mips32,4kc,mips32) \
                        -Wa,--trap

cflags-$(CONFIG_CPU_4KSD)       += \
                        $(call set_gccflags,4ksd,mips32r2,4kec,mips32r2) \
                        -Wa,--trap

Thanks
--
               Franck

From ddaney@avtrex.com Wed Oct  5 05:11:09 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 05 Oct 2005 05:11:26 +0100 (BST)
Received: from adsl-67-116-42-147.dsl.sntc01.pacbell.net ([67.116.42.147]:38686
	"EHLO avtrex.com") by ftp.linux-mips.org with ESMTP
	id S8133500AbVJEELJ (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Wed, 5 Oct 2005 05:11:09 +0100
Received: from [192.168.7.26] ([192.168.7.3]) by avtrex.com with Microsoft SMTPSVC(6.0.3790.1830);
	 Tue, 4 Oct 2005 21:11:07 -0700
Message-ID: <4343525A.6080605@avtrex.com>
Date:	Tue, 04 Oct 2005 21:11:06 -0700
From:	David Daney <ddaney@avtrex.com>
User-Agent: Mozilla Thunderbird 1.0.7-1.1.fc3 (X11/20050929)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	linux-mips@linux-mips.org
Subject: Where is op_model_mipsxx.c ?
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 05 Oct 2005 04:11:07.0021 (UTC) FILETIME=[CF3433D0:01C5C962]
Return-Path: <ddaney@avtrex.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9141
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ddaney@avtrex.com
Precedence: bulk
X-list: linux-mips

I noticed this in the Makefile for the OProfile directory for mips:

oprofile-$(CONFIG_CPU_MIPS32_R1)                += op_model_mipsxx.o

The file op_model_mipsxx.c does not seem to exist.  Which implies to me 
that someone was working on making it work for MIPS32, but didn't quite 
finish.

I want to start hacking on OProfile for a MIPS32 based system and 
thought it might make a nice starting point.

If the missing file exists would its author mind making it available to me?

Thanks,
David Daney

From ddaney@avtrex.com Wed Oct  5 05:37:04 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 05 Oct 2005 05:37:24 +0100 (BST)
Received: from adsl-67-116-42-147.dsl.sntc01.pacbell.net ([67.116.42.147]:33555
	"EHLO avtrex.com") by ftp.linux-mips.org with ESMTP
	id S8133498AbVJEEhE (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Wed, 5 Oct 2005 05:37:04 +0100
Received: from [192.168.7.26] ([192.168.7.3]) by avtrex.com with Microsoft SMTPSVC(6.0.3790.1830);
	 Tue, 4 Oct 2005 21:37:02 -0700
Message-ID: <4343586E.4030703@avtrex.com>
Date:	Tue, 04 Oct 2005 21:37:02 -0700
From:	David Daney <ddaney@avtrex.com>
User-Agent: Mozilla Thunderbird 1.0.7-1.1.fc3 (X11/20050929)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	linux-mips@linux-mips.org
Subject: [PATCH] fix warning in tlbex.c for CONFIG_32BIT
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 05 Oct 2005 04:37:02.0413 (UTC) FILETIME=[6E4A2FD0:01C5C966]
Return-Path: <ddaney@avtrex.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9142
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ddaney@avtrex.com
Precedence: bulk
X-list: linux-mips

For 32 bit builds CONFIG_64BIT is not defined.  Should be doing #ifdef 
not #if.

Signed-off-by: David Daney <ddaney@avtrex.com>



diff --git a/arch/mips/mm/tlbex.c b/arch/mips/mm/tlbex.c
--- a/arch/mips/mm/tlbex.c
+++ b/arch/mips/mm/tlbex.c
@@ -513,7 +513,7 @@ static __init int rel_lo(long val)

  static __init void i_LA_mostly(u32 **buf, unsigned int rs, long addr)
  {
-#if CONFIG_64BIT
+#ifdef CONFIG_64BIT
         if (!in_compat_space_p(addr)) {
                 i_lui(buf, rs, rel_highest(addr));
                 if (rel_higher(addr))

From ddaney@avtrex.com Wed Oct  5 06:06:12 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 05 Oct 2005 06:06:28 +0100 (BST)
Received: from adsl-67-116-42-147.dsl.sntc01.pacbell.net ([67.116.42.147]:33043
	"EHLO avtrex.com") by ftp.linux-mips.org with ESMTP
	id S8133498AbVJEFGM (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Wed, 5 Oct 2005 06:06:12 +0100
Received: from [192.168.7.26] ([192.168.7.3]) by avtrex.com with Microsoft SMTPSVC(6.0.3790.1830);
	 Tue, 4 Oct 2005 22:06:10 -0700
Message-ID: <43435F42.9050500@avtrex.com>
Date:	Tue, 04 Oct 2005 22:06:10 -0700
From:	David Daney <ddaney@avtrex.com>
User-Agent: Mozilla Thunderbird 1.0.7-1.1.fc3 (X11/20050929)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	linux-mips@linux-mips.org
Subject: [PATCH] Fix oprofile compilation error.
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 05 Oct 2005 05:06:10.0278 (UTC) FILETIME=[80193860:01C5C96A]
Return-Path: <ddaney@avtrex.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9143
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ddaney@avtrex.com
Precedence: bulk
X-list: linux-mips

Looks like oprofile_arch_init() was changed so that we have to fill in 
the caller's oprofile_operations instead of setting a pointer to ours.

We can now make the prototype oprofile_operations be __initdata as a 
copy is being made.


Signed-off-by: David Daney <ddaney@avtrex.com>


diff --git a/arch/mips/oprofile/common.c b/arch/mips/oprofile/common.c
--- a/arch/mips/oprofile/common.c
+++ b/arch/mips/oprofile/common.c
@@ -68,7 +68,7 @@ static void op_mips_stop(void)
         on_each_cpu(model->cpu_stop, NULL, 0, 1);
  }

-static struct oprofile_operations oprof_mips_ops = {
+static struct oprofile_operations oprof_mips_ops __initdata = {
         .create_files   = op_mips_create_files,
         .setup          = op_mips_setup,
         .start          = op_mips_start,
@@ -76,7 +76,7 @@ static struct oprofile_operations oprof_
         .cpu_type       = NULL
  };

-int __init oprofile_arch_init(struct oprofile_operations **ops)
+int __init oprofile_arch_init(struct oprofile_operations *ops)
  {
         struct op_mips_model *lmodel = NULL;
         int res;
@@ -101,7 +101,7 @@ int __init oprofile_arch_init(struct opr
         model = lmodel;

         oprof_mips_ops.cpu_type = lmodel->cpu_type;
-       *ops = &oprof_mips_ops;
+       *ops = oprof_mips_ops;

         printk(KERN_INFO "oprofile: using %s performance monitoring.\n",
                lmodel->cpu_type);

From vagabon.xyz@gmail.com Wed Oct  5 07:55:25 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 05 Oct 2005 07:55:42 +0100 (BST)
Received: from zproxy.gmail.com ([64.233.162.195]:42725 "EHLO zproxy.gmail.com")
	by ftp.linux-mips.org with ESMTP id S8133512AbVJEGzW convert rfc822-to-8bit
	(ORCPT <rfc822;linux-mips@linux-mips.org>);
	Wed, 5 Oct 2005 07:55:22 +0100
Received: by zproxy.gmail.com with SMTP id j2so54320nzf
        for <linux-mips@linux-mips.org>; Tue, 04 Oct 2005 23:55:16 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:message-id:date:from:reply-to:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references;
        b=bCa3nNpPS3nMPWhU19IEwggS/VVcOd2ErptiVMF+8mB//10eD4H7pwXMKDVpMGQjnu2ql2+/Sx6mv6QEY1Ker0h4C29vIb5OBB2MNqVWDBgSC2wWrbeP6R7/KHaAb8zPlI+ynCf3q153UzT7NsNjewr6VcZoFILgSACOdFVfxWE=
Received: by 10.36.138.5 with SMTP id l5mr219646nzd;
        Tue, 04 Oct 2005 23:55:16 -0700 (PDT)
Received: by 10.36.49.3 with HTTP; Tue, 4 Oct 2005 23:55:15 -0700 (PDT)
Message-ID: <cda58cb80510042355r66d6b4b7k@mail.gmail.com>
Date:	Wed, 5 Oct 2005 08:55:15 +0200
From:	Franck <vagabon.xyz@gmail.com>
Reply-To: Franck <vagabon.xyz@gmail.com>
To:	"Maciej W. Rozycki" <macro@linux-mips.org>
Subject: Re: [PATCH] Add support for 4KS cpu.
Cc:	"Kevin D. Kissell" <kevink@mips.com>,
	Ralf Baechle <ralf@linux-mips.org>, linux-mips@linux-mips.org
In-Reply-To: <cda58cb80510041033h2a67f072s@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8BIT
Content-Disposition: inline
References: <cda58cb80510040149p690397afo@mail.gmail.com>
	 <Pine.LNX.4.61L.0510041219500.10696@blysk.ds.pg.gda.pl>
	 <434277D5.1090603@mips.com>
	 <Pine.LNX.4.61L.0510041358300.10696@blysk.ds.pg.gda.pl>
	 <434289A7.50007@mips.com>
	 <cda58cb80510040818v6d93fe53w@mail.gmail.com>
	 <Pine.LNX.4.61L.0510041651150.10696@blysk.ds.pg.gda.pl>
	 <cda58cb80510041033h2a67f072s@mail.gmail.com>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9144
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

2005/10/4, Franck <vagabon.xyz@gmail.com>:
> >  But since you seem to use SDE, you may as well just use "4ksc" (and
> > possibly skip "-msmartmips" as it's implied); similarly for "4ksd".
> > Unfortunately documentation on what CPU types are accepted seems to be
> > incomplete -- use `gcc -v --help' to see which ones are actually
> > available.
> >
>
> maybe something like these are better (I removed last parameter since
> it's no more used) ?
>
> cflags-$(CONFIG_CPU_4KSC)       += \
>                         $(call set_gccflags,4ksc,mips32,4kc,mips32) \
>                         -Wa,--trap
>
> cflags-$(CONFIG_CPU_4KSD)       += \
>                         $(call set_gccflags,4ksd,mips32r2,4kec,mips32r2) \
>                         -Wa,--trap
>

Actually it would be better to let smartmips options in case we use
fallback options:

Thanks
--
               Franck

From vagabon.xyz@gmail.com Wed Oct  5 08:00:36 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 05 Oct 2005 08:00:52 +0100 (BST)
Received: from zproxy.gmail.com ([64.233.162.195]:34320 "EHLO zproxy.gmail.com")
	by ftp.linux-mips.org with ESMTP id S8133513AbVJEHAg convert rfc822-to-8bit
	(ORCPT <rfc822;linux-mips@linux-mips.org>);
	Wed, 5 Oct 2005 08:00:36 +0100
Received: by zproxy.gmail.com with SMTP id j2so54729nzf
        for <linux-mips@linux-mips.org>; Wed, 05 Oct 2005 00:00:30 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:message-id:date:from:reply-to:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references;
        b=QMpT7+4jXabXDYaB8mUzIMiuCUHFy1Jvc/yQQN4eJiTFqInwxBm8ngZyX+fVTj3qqtnjZYGTA3vFL/o/uSZRh+dMSnychnOh6bJXq+2mX/xYzczYSDRTQOC1pFkHaTirGpCZ7mRa2kSIsxleymChLJ1hotWRTio1+OqoDYwzNzQ=
Received: by 10.36.43.8 with SMTP id q8mr214417nzq;
        Wed, 05 Oct 2005 00:00:30 -0700 (PDT)
Received: by 10.36.49.3 with HTTP; Wed, 5 Oct 2005 00:00:30 -0700 (PDT)
Message-ID: <cda58cb80510050000r1baea5c7k@mail.gmail.com>
Date:	Wed, 5 Oct 2005 09:00:30 +0200
From:	Franck <vagabon.xyz@gmail.com>
Reply-To: Franck <vagabon.xyz@gmail.com>
To:	"Kevin D. Kissell" <kevink@mips.com>
Subject: Re: [PATCH] Add support for 4KS cpu.
Cc:	"Maciej W. Rozycki" <macro@linux-mips.org>,
	Ralf Baechle <ralf@linux-mips.org>, linux-mips@linux-mips.org
In-Reply-To: <434277D5.1090603@mips.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8BIT
Content-Disposition: inline
References: <cda58cb80510040149p690397afo@mail.gmail.com>
	 <Pine.LNX.4.61L.0510041219500.10696@blysk.ds.pg.gda.pl>
	 <434277D5.1090603@mips.com>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9145
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

2005/10/4, Kevin D. Kissell <kevink@mips.com>:
> They also have some physical security and cryptography accelleration
> features, some of which use extended CPU state that would
> require some kernel context management support if anyone wanted
> to actually use them in Linux applications. The real point of
> having a CPU_4KSC config flag would be to enable building-in
> such support.
>

what is extended CPU state that you're talking about ?

> I'm being a teeny bit vague about this, because I'm not 100%
> certain that all the details of "SmartMIPS" have been published.
>

hmm, does that mean that smart mips extension couldn't be supported in
Linux in case that this extension have not been published ?

Thanks
--
               Franck

From kevink@mips.com Wed Oct  5 10:45:26 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 05 Oct 2005 10:45:45 +0100 (BST)
Received: from 209-232-97-206.ded.pacbell.net ([209.232.97.206]:19706 "EHLO
	dns0.mips.com") by ftp.linux-mips.org with ESMTP id S3465565AbVJEJp0
	(ORCPT <rfc822;linux-mips@linux-mips.org>);
	Wed, 5 Oct 2005 10:45:26 +0100
Received: from mercury.mips.com (sbcns-dmz [209.232.97.193])
	by dns0.mips.com (8.12.11/8.12.11) with ESMTP id j959jFgs004784;
	Wed, 5 Oct 2005 02:45:15 -0700 (PDT)
Received: from [192.168.236.16] (grendel [192.168.236.16])
	by mercury.mips.com (8.12.9/8.12.11) with ESMTP id j959jD17024114;
	Wed, 5 Oct 2005 02:45:14 -0700 (PDT)
Message-ID: <4343A0FE.9080808@mips.com>
Date:	Wed, 05 Oct 2005 11:46:38 +0200
From:	"Kevin D. Kissell" <kevink@mips.com>
User-Agent: Mozilla Thunderbird 1.0.6 (X11/20050716)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	Franck <vagabon.xyz@gmail.com>
CC:	"Maciej W. Rozycki" <macro@linux-mips.org>,
	Ralf Baechle <ralf@linux-mips.org>, linux-mips@linux-mips.org
Subject: Re: [PATCH] Add support for 4KS cpu.
References: <cda58cb80510040149p690397afo@mail.gmail.com>	 <Pine.LNX.4.61L.0510041219500.10696@blysk.ds.pg.gda.pl>	 <434277D5.1090603@mips.com> <cda58cb80510050000r1baea5c7k@mail.gmail.com>
In-Reply-To: <cda58cb80510050000r1baea5c7k@mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Scanned-By: MIMEDefang 2.39
Return-Path: <kevink@mips.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9146
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: kevink@mips.com
Precedence: bulk
X-list: linux-mips

Franck wrote:
> 2005/10/4, Kevin D. Kissell <kevink@mips.com>:
> 
>>They also have some physical security and cryptography accelleration
>>features, some of which use extended CPU state that would
>>require some kernel context management support if anyone wanted
>>to actually use them in Linux applications. The real point of
>>having a CPU_4KSC config flag would be to enable building-in
>>such support.
>>
> what is extended CPU state that you're talking about ?

That would be telling.  ;o)   Seriously, see below.

>>I'm being a teeny bit vague about this, because I'm not 100%
>>certain that all the details of "SmartMIPS" have been published.
>>
> 
> hmm, does that mean that smart mips extension couldn't be supported in
> Linux in case that this extension have not been published ?

I'm personally not a big believer in security-through-obscurity,
but there are those, both inside and outside MIPS, who felt that
the security of SmartMIPS cores would be enhanced if we didn't
give away all of the details.  As a consequence, we put off
publishing the nitty-gritty details of SmartMIPS for quite a while.
I note that we now have the programmers' manual on-line at www.mips.com,
so I guess I'm implicitly cleared to discuss it in at least that level
of detail.

A key element of SmartMIPS that allows for a ~2x speedup for
crypto codes that rely on extended precision math (RSA, ECC)
is the combination of an extension to the Hi/Lo accumulator
(called "ACX") with a special extract-and-reduce instruction
("MFLHXU").  If one wants to use that in Linux - or at least,
if one wants to allow more than one thread to be able to use
it at a time - one needs to save/restore ACX on the kernel
stackframe, along with Hi and Lo.

		Regards,

		Kevin K.

From ralf@linux-mips.org Wed Oct  5 11:44:44 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 05 Oct 2005 11:44:59 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:29210 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S3465659AbVJEKoo (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Wed, 5 Oct 2005 11:44:44 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j95AicIq009380;
	Wed, 5 Oct 2005 11:44:38 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j95AicYx009379;
	Wed, 5 Oct 2005 11:44:38 +0100
Date:	Wed, 5 Oct 2005 11:44:38 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	David Daney <ddaney@avtrex.com>
Cc:	linux-mips@linux-mips.org
Subject: Re: Where is op_model_mipsxx.c ?
Message-ID: <20051005104437.GG2699@linux-mips.org>
References: <4343525A.6080605@avtrex.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <4343525A.6080605@avtrex.com>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9147
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Tue, Oct 04, 2005 at 09:11:06PM -0700, David Daney wrote:

> I noticed this in the Makefile for the OProfile directory for mips:
> 
> oprofile-$(CONFIG_CPU_MIPS32_R1)                += op_model_mipsxx.o
> 
> The file op_model_mipsxx.c does not seem to exist.  Which implies to me 
> that someone was working on making it work for MIPS32, but didn't quite 
> finish.
> 
> I want to start hacking on OProfile for a MIPS32 based system and 
> thought it might make a nice starting point.
> 
> If the missing file exists would its author mind making it available to me?

I've got oprofile support for MIPS32 / MIPS64 style counters in the queue.
It still needs some debugging to become actually useful but anyway, I'm
going to check those patches into git in a few minutes.

  Ralf

From ralf@linux-mips.org Wed Oct  5 11:53:42 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 05 Oct 2005 11:53:58 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:2589 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S3465659AbVJEKxm (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Wed, 5 Oct 2005 11:53:42 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j95Arar3009777;
	Wed, 5 Oct 2005 11:53:36 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j95Ara7Z009776;
	Wed, 5 Oct 2005 11:53:36 +0100
Date:	Wed, 5 Oct 2005 11:53:36 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	David Daney <ddaney@avtrex.com>
Cc:	linux-mips@linux-mips.org
Subject: Re: [PATCH] fix warning in tlbex.c for CONFIG_32BIT
Message-ID: <20051005105336.GH2699@linux-mips.org>
References: <4343586E.4030703@avtrex.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <4343586E.4030703@avtrex.com>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9148
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Tue, Oct 04, 2005 at 09:37:02PM -0700, David Daney wrote:
> Date:	Tue, 04 Oct 2005 21:37:02 -0700
> From:	David Daney <ddaney@avtrex.com>
> To:	linux-mips@linux-mips.org
> Subject: [PATCH] fix warning in tlbex.c for CONFIG_32BIT
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
                                                ^^^^^^^^^^^^^

Applied - BUT: your mailer garbles patches ...

  Ralf

From vagabon.xyz@gmail.com Wed Oct  5 14:21:10 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 05 Oct 2005 14:21:27 +0100 (BST)
Received: from zproxy.gmail.com ([64.233.162.199]:52012 "EHLO zproxy.gmail.com")
	by ftp.linux-mips.org with ESMTP id S3465666AbVJENVK convert rfc822-to-8bit
	(ORCPT <rfc822;linux-mips@linux-mips.org>);
	Wed, 5 Oct 2005 14:21:10 +0100
Received: by zproxy.gmail.com with SMTP id j2so95318nzf
        for <linux-mips@linux-mips.org>; Wed, 05 Oct 2005 06:20:59 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:message-id:date:from:reply-to:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references;
        b=WTCNu1jze6HvHhxT1/om2R18JfKQ2CdOQX3kunIVPlgUYFW1+q+v/d/tixasiwIMfXsSTUnMBk7f1BU04PXVjaZdetDX/hxOaYTeDGOx8BxsnalBuaIjDu/x1ghQ8wk5whX2evUqP1ZySf6jM4fnAUSOepW0BLUH+uJ20aqowHs=
Received: by 10.36.252.78 with SMTP id z78mr520494nzh;
        Wed, 05 Oct 2005 06:20:59 -0700 (PDT)
Received: by 10.36.49.3 with HTTP; Wed, 5 Oct 2005 06:20:59 -0700 (PDT)
Message-ID: <cda58cb80510050620m693040e0o@mail.gmail.com>
Date:	Wed, 5 Oct 2005 15:20:59 +0200
From:	Franck <vagabon.xyz@gmail.com>
Reply-To: Franck <vagabon.xyz@gmail.com>
To:	"Kevin D. Kissell" <kevink@mips.com>
Subject: Re: [PATCH] Add support for 4KS cpu.
Cc:	"Maciej W. Rozycki" <macro@linux-mips.org>,
	Ralf Baechle <ralf@linux-mips.org>, linux-mips@linux-mips.org
In-Reply-To: <4343A0FE.9080808@mips.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8BIT
Content-Disposition: inline
References: <cda58cb80510040149p690397afo@mail.gmail.com>
	 <Pine.LNX.4.61L.0510041219500.10696@blysk.ds.pg.gda.pl>
	 <434277D5.1090603@mips.com>
	 <cda58cb80510050000r1baea5c7k@mail.gmail.com>
	 <4343A0FE.9080808@mips.com>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9149
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

2005/10/5, Kevin D. Kissell <kevink@mips.com>:
> I'm personally not a big believer in security-through-obscurity,
> but there are those, both inside and outside MIPS, who felt that
> the security of SmartMIPS cores would be enhanced if we didn't
> give away all of the details.  As a consequence, we put off
> publishing the nitty-gritty details of SmartMIPS for quite a while.
> I note that we now have the programmers' manual on-line at www.mips.com,
> so I guess I'm implicitly cleared to discuss it in at least that level
> of detail.
>

well, I agree with you on "security-through-obscurity" point. From
outside, I feel like MIPS has a lot of things to _hide_ athough that's
not a good feeling for security systems. Anyways...

> A key element of SmartMIPS that allows for a ~2x speedup for
> crypto codes that rely on extended precision math (RSA, ECC)
> is the combination of an extension to the Hi/Lo accumulator
> (called "ACX") with a special extract-and-reduce instruction
> ("MFLHXU").  If one wants to use that in Linux - or at least,
> if one wants to allow more than one thread to be able to use
> it at a time - one needs to save/restore ACX on the kernel
> stackframe, along with Hi and Lo.
>

Correct. I must at least add this in the patch. I'll do it soon.

Thanks for enlight this.
--
               Franck

From macro@linux-mips.org Wed Oct  5 14:22:46 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 05 Oct 2005 14:23:01 +0100 (BST)
Received: from pollux.ds.pg.gda.pl ([153.19.208.7]:24079 "EHLO
	pollux.ds.pg.gda.pl") by ftp.linux-mips.org with ESMTP
	id S3465667AbVJENWq (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Wed, 5 Oct 2005 14:22:46 +0100
Received: from localhost (localhost [127.0.0.1])
	by pollux.ds.pg.gda.pl (Postfix) with ESMTP
	id D2752F596E; Wed,  5 Oct 2005 15:22:41 +0200 (CEST)
Received: from pollux.ds.pg.gda.pl ([127.0.0.1])
 by localhost (pollux [127.0.0.1]) (amavisd-new, port 10024) with ESMTP
 id 21731-02; Wed,  5 Oct 2005 15:22:41 +0200 (CEST)
Received: from piorun.ds.pg.gda.pl (piorun.ds.pg.gda.pl [153.19.208.8])
	by pollux.ds.pg.gda.pl (Postfix) with ESMTP
	id 988DBE1D01; Wed,  5 Oct 2005 15:22:41 +0200 (CEST)
Received: from blysk.ds.pg.gda.pl (macro@blysk.ds.pg.gda.pl [153.19.208.6])
	by piorun.ds.pg.gda.pl (8.13.3/8.13.1) with ESMTP id j95DMhVJ003740;
	Wed, 5 Oct 2005 15:22:43 +0200
Date:	Wed, 5 Oct 2005 14:22:51 +0100 (BST)
From:	"Maciej W. Rozycki" <macro@linux-mips.org>
To:	Franck <vagabon.xyz@gmail.com>
Cc:	"Kevin D. Kissell" <kevink@mips.com>,
	Ralf Baechle <ralf@linux-mips.org>, linux-mips@linux-mips.org
Subject: Re: [PATCH] Add support for 4KS cpu.
In-Reply-To: <cda58cb80510042355r66d6b4b7k@mail.gmail.com>
Message-ID: <Pine.LNX.4.61L.0510051112390.13762@blysk.ds.pg.gda.pl>
References: <cda58cb80510040149p690397afo@mail.gmail.com> 
 <Pine.LNX.4.61L.0510041219500.10696@blysk.ds.pg.gda.pl>  <434277D5.1090603@mips.com>
  <Pine.LNX.4.61L.0510041358300.10696@blysk.ds.pg.gda.pl>  <434289A7.50007@mips.com>
  <cda58cb80510040818v6d93fe53w@mail.gmail.com> 
 <Pine.LNX.4.61L.0510041651150.10696@blysk.ds.pg.gda.pl> 
 <cda58cb80510041033h2a67f072s@mail.gmail.com> <cda58cb80510042355r66d6b4b7k@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
X-Virus-Scanned: ClamAV 0.86.2/1112/Wed Oct  5 11:04:38 2005 on piorun.ds.pg.gda.pl
X-Virus-Status:	Clean
X-Virus-Scanned: by amavisd-new at pollux.ds.pg.gda.pl
Return-Path: <macro@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9150
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: macro@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Wed, 5 Oct 2005, Franck wrote:

> Actually it would be better to let smartmips options in case we use
> fallback options:

 In which case the toolchain is not going to support the "-msmartmips" 
option anyway...  Perhaps you should just use the same options throughout 
as there is probably no sensible set of legacy options to fall back to.  

  Maciej

From ddaney@avtrex.com Wed Oct  5 16:48:05 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 05 Oct 2005 16:48:24 +0100 (BST)
Received: from adsl-67-116-42-147.dsl.sntc01.pacbell.net ([67.116.42.147]:29968
	"EHLO avtrex.com") by ftp.linux-mips.org with ESMTP
	id S3465672AbVJEPsF (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Wed, 5 Oct 2005 16:48:05 +0100
Received: from [192.168.7.26] ([192.168.7.3]) by avtrex.com with Microsoft SMTPSVC(6.0.3790.1830);
	 Wed, 5 Oct 2005 08:48:02 -0700
Message-ID: <4343F5B2.3020509@avtrex.com>
Date:	Wed, 05 Oct 2005 08:48:02 -0700
From:	David Daney <ddaney@avtrex.com>
User-Agent: Mozilla Thunderbird 1.0.7-1.1.fc3 (X11/20050929)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	Ralf Baechle <ralf@linux-mips.org>
CC:	linux-mips@linux-mips.org
Subject: Re: [PATCH] fix warning in tlbex.c for CONFIG_32BIT
References: <4343586E.4030703@avtrex.com> <20051005105336.GH2699@linux-mips.org>
In-Reply-To: <20051005105336.GH2699@linux-mips.org>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 05 Oct 2005 15:48:02.0848 (UTC) FILETIME=[2B610A00:01C5C9C4]
Return-Path: <ddaney@avtrex.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9151
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ddaney@avtrex.com
Precedence: bulk
X-list: linux-mips

Ralf Baechle wrote:
> On Tue, Oct 04, 2005 at 09:37:02PM -0700, David Daney wrote:
> 
>>Date:	Tue, 04 Oct 2005 21:37:02 -0700
>>From:	David Daney <ddaney@avtrex.com>
>>To:	linux-mips@linux-mips.org
>>Subject: [PATCH] fix warning in tlbex.c for CONFIG_32BIT
>>Content-Type: text/plain; charset=ISO-8859-1; format=flowed
> 
>                                                 ^^^^^^^^^^^^^
> 
> Applied - BUT: your mailer garbles patches ...
> 

Some people on this list are quite adamant that patches be in-line.

I was trying to see how my mailer (Thunderbird) handled this.  Obviously 
  (in hindsight) it screws things up.

Sending as an attachment works well except some mailers (Not 
Thunderbird) cannot quote attached patches with out jumping through hoops.

I don't really want to change the mailer that I am using, so I am in a 
bit of a bind WRT submitting patches here.

FWIW other mailing lists (binutils, gcc) don't seem to have the same 
trouble with attached patches.

David Daney

From ddaney@avtrex.com Wed Oct  5 17:39:53 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 05 Oct 2005 17:40:18 +0100 (BST)
Received: from adsl-67-116-42-147.dsl.sntc01.pacbell.net ([67.116.42.147]:6688
	"EHLO avtrex.com") by ftp.linux-mips.org with ESMTP
	id S3465669AbVJEQjx (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Wed, 5 Oct 2005 17:39:53 +0100
Received: from [192.168.7.26] ([192.168.7.3]) by avtrex.com with Microsoft SMTPSVC(6.0.3790.1830);
	 Wed, 5 Oct 2005 09:39:51 -0700
Message-ID: <434401D6.3050602@avtrex.com>
Date:	Wed, 05 Oct 2005 09:39:50 -0700
From:	David Daney <ddaney@avtrex.com>
User-Agent: Mozilla Thunderbird 1.0.7-1.1.fc3 (X11/20050929)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	linux-mips@linux-mips.org
CC:	Dominic Sweetman <dom@mips.com>
Subject: The NUBI ...
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 05 Oct 2005 16:39:51.0100 (UTC) FILETIME=[680AA7C0:01C5C9CB]
Return-Path: <ddaney@avtrex.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9152
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ddaney@avtrex.com
Precedence: bulk
X-list: linux-mips

I see that there are now some interesting pages in the Wiki about the NUBI:

http://www.linux-mips.org/wiki/NUBI

Unfortunately there is no good way to navigate to them from the home page.

You can follow the links to see a preliminary version of the 
specification, but I see no indication about how one would go about 
commenting on it.

David Daney.

From ralf@linux-mips.org Wed Oct  5 18:17:19 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 05 Oct 2005 18:17:38 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:54810 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S3465669AbVJERRT (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Wed, 5 Oct 2005 18:17:19 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j95HHDeA022959;
	Wed, 5 Oct 2005 18:17:13 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j95HHCPp022958;
	Wed, 5 Oct 2005 18:17:12 +0100
Date:	Wed, 5 Oct 2005 18:17:12 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	David Daney <ddaney@avtrex.com>
Cc:	linux-mips@linux-mips.org
Subject: Re: [PATCH] fix warning in tlbex.c for CONFIG_32BIT
Message-ID: <20051005171712.GJ2699@linux-mips.org>
References: <4343586E.4030703@avtrex.com> <20051005105336.GH2699@linux-mips.org> <4343F5B2.3020509@avtrex.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <4343F5B2.3020509@avtrex.com>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9153
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Wed, Oct 05, 2005 at 08:48:02AM -0700, David Daney wrote:

> Some people on this list are quite adamant that patches be in-line.
> 
> I was trying to see how my mailer (Thunderbird) handled this.  Obviously 
>  (in hindsight) it screws things up.
> 
> Sending as an attachment works well except some mailers (Not 
> Thunderbird) cannot quote attached patches with out jumping through hoops.
> 
> I don't really want to change the mailer that I am using, so I am in a 
> bit of a bind WRT submitting patches here.
> 
> FWIW other mailing lists (binutils, gcc) don't seem to have the same 
> trouble with attached patches.

Maybe a different style of work there.  The submission style we're asking
people to follow here is exactly the same as on linux-kernel, netdev or
other kernel-related lists.

I just asked somebody; this is the answer I got:

<snip>
  I have never had any luck getting mailers to send patches in a way that
  no one complained about. In the end, I used this
  http://www.speakeasy.org/~pj99/sgi/sendpatchset

  I found the best way is to have a directory with patches like
  001_part1.patch, 002_part2.patch etc with matching explainations in
  001_part1.mail 002_part2.mail . I have a script that generates the final
  mails and feeds them to sendpatchset
<snip>

The script may not be what you want but I guess I'll be something like it
to deal with the huge patchsets I'm sometimes fiddling with - like the
452 patch monster right now ...

  Ralf

From ralf@linux-mips.org Wed Oct  5 18:31:26 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 05 Oct 2005 18:31:45 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:46598 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S3465679AbVJERb0 (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Wed, 5 Oct 2005 18:31:26 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j95HVK8q023452;
	Wed, 5 Oct 2005 18:31:20 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j95HVHf2023451;
	Wed, 5 Oct 2005 18:31:17 +0100
Date:	Wed, 5 Oct 2005 18:31:17 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	David Daney <ddaney@avtrex.com>
Cc:	linux-mips@linux-mips.org, Dominic Sweetman <dom@mips.com>
Subject: Re: The NUBI ...
Message-ID: <20051005173117.GL2699@linux-mips.org>
References: <434401D6.3050602@avtrex.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <434401D6.3050602@avtrex.com>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9154
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Wed, Oct 05, 2005 at 09:39:50AM -0700, David Daney wrote:

> I see that there are now some interesting pages in the Wiki about the NUBI:
> 
> http://www.linux-mips.org/wiki/NUBI
> 
> Unfortunately there is no good way to navigate to them from the home page.
> 
> You can follow the links to see a preliminary version of the 
> specification, but I see no indication about how one would go about 
> commenting on it.

You can either use the "discussion" tab at the top of every page to
comment on it or alternatively if you're interested in participating in the
discussion use the nubi@linux-mips.org mailing list.

  Ralf

From vagabon.xyz@gmail.com Wed Oct  5 19:05:04 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 05 Oct 2005 19:05:20 +0100 (BST)
Received: from zproxy.gmail.com ([64.233.162.198]:46020 "EHLO zproxy.gmail.com")
	by ftp.linux-mips.org with ESMTP id S3465679AbVJESFE convert rfc822-to-8bit
	(ORCPT <rfc822;linux-mips@linux-mips.org>);
	Wed, 5 Oct 2005 19:05:04 +0100
Received: by zproxy.gmail.com with SMTP id q3so155346nzb
        for <linux-mips@linux-mips.org>; Wed, 05 Oct 2005 11:04:56 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:message-id:date:from:reply-to:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references;
        b=sHCtSOUbx2HgjLHJZ1SZ3ghj4c6kJfw3UUE2zeCV52xHdWUVAmbUy5ZYoTVEsvca7AOFUm70XXxgVBV/j8sLdN0UrKTus/OFzRyluKFWB+s9zZDDCsKX1ho0KALeXHExEiyE7FSST1RYgn0ki70PkRVZITsLZic8CKQZ5kJQbDE=
Received: by 10.36.49.12 with SMTP id w12mr851105nzw;
        Wed, 05 Oct 2005 11:04:56 -0700 (PDT)
Received: by 10.36.49.3 with HTTP; Wed, 5 Oct 2005 11:04:56 -0700 (PDT)
Message-ID: <cda58cb80510051104p6c40b140w@mail.gmail.com>
Date:	Wed, 5 Oct 2005 20:04:56 +0200
From:	Franck <vagabon.xyz@gmail.com>
Reply-To: Franck <vagabon.xyz@gmail.com>
To:	"Maciej W. Rozycki" <macro@linux-mips.org>
Subject: Re: [PATCH] Add support for 4KS cpu.
Cc:	"Kevin D. Kissell" <kevink@mips.com>,
	Ralf Baechle <ralf@linux-mips.org>, linux-mips@linux-mips.org
In-Reply-To: <Pine.LNX.4.61L.0510051112390.13762@blysk.ds.pg.gda.pl>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8BIT
Content-Disposition: inline
References: <cda58cb80510040149p690397afo@mail.gmail.com>
	 <Pine.LNX.4.61L.0510041219500.10696@blysk.ds.pg.gda.pl>
	 <434277D5.1090603@mips.com>
	 <Pine.LNX.4.61L.0510041358300.10696@blysk.ds.pg.gda.pl>
	 <434289A7.50007@mips.com>
	 <cda58cb80510040818v6d93fe53w@mail.gmail.com>
	 <Pine.LNX.4.61L.0510041651150.10696@blysk.ds.pg.gda.pl>
	 <cda58cb80510041033h2a67f072s@mail.gmail.com>
	 <cda58cb80510042355r66d6b4b7k@mail.gmail.com>
	 <Pine.LNX.4.61L.0510051112390.13762@blysk.ds.pg.gda.pl>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9155
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

2005/10/5, Maciej W. Rozycki <macro@linux-mips.org>:
> On Wed, 5 Oct 2005, Franck wrote:
>
> > Actually it would be better to let smartmips options in case we use
> > fallback options:
>
>  In which case the toolchain is not going to support the "-msmartmips"
> option anyway...

toolchain could support smartmips extension without supporting 4ksd
specific instructions...

Thanks
--
               Franck

From aravindforl@yahoo.co.in Thu Oct  6 07:53:57 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 06 Oct 2005 07:54:14 +0100 (BST)
Received: from web8604.mail.in.yahoo.com ([202.43.219.79]:29600 "HELO
	web8604.mail.in.yahoo.com") by ftp.linux-mips.org with SMTP
	id S8133531AbVJFGx5 (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 6 Oct 2005 07:53:57 +0100
Received: (qmail 6980 invoked by uid 60001); 6 Oct 2005 06:53:32 -0000
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
  s=s1024; d=yahoo.co.in;
  h=Message-ID:Received:Date:From:Subject:To:MIME-Version:Content-Type:Content-Transfer-Encoding;
  b=eVsnq4XcUIF0n3vlFv4DM0+0ICK2c26nh7/9And7ACYVOsxJBRaTGjbJP8veO4LivIHuOA+t6BTLpl825XXQb0bpa7nBVnN8mJONfDYR4PclnOKSDy10dz/8Ax2y+yGXFy41/hZrdv3H5VN0lT0dGpoyyvgBbGYO+16QZARoUyg=  ;
Message-ID: <20051006065332.6978.qmail@web8604.mail.in.yahoo.com>
Received: from [147.243.216.4] by web8604.mail.in.yahoo.com via HTTP; Thu, 06 Oct 2005 07:53:32 BST
Date:	Thu, 6 Oct 2005 07:53:32 +0100 (BST)
From:	Arravind babu <aravindforl@yahoo.co.in>
Subject: Basic question w.r.t bootloader
To:	linux-mips@linux-mips.org
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Return-Path: <aravindforl@yahoo.co.in>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9156
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: aravindforl@yahoo.co.in
Precedence: bulk
X-list: linux-mips

Hi all,


       Generally how bootloader/bootflash code detects
the size of RAM on the board? Is it hardcoded some
where in the bootflash code or is it detected using
memory chips ?



Thanks in advance,

Aravind.


		
__________________________________________________________ 
Yahoo! India Matrimony: Find your partner now. Go to http://yahoo.shaadi.com

From wd@denx.de Thu Oct  6 08:29:36 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 06 Oct 2005 08:29:51 +0100 (BST)
Received: from mailout01.sul.t-online.com ([194.25.134.80]:3205 "EHLO
	mailout01.sul.t-online.com") by ftp.linux-mips.org with ESMTP
	id S8133532AbVJFH3g (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 6 Oct 2005 08:29:36 +0100
Received: from fwd31.aul.t-online.de 
	by mailout01.sul.t-online.com with smtp 
	id 1ENQC7-0005M2-02; Thu, 06 Oct 2005 09:29:35 +0200
Received: from denx.de (SOkMwmZVre8yPsLo7eQDPyoPWdgo6abFTP+ER70FSaoInTW0cZK+46@[84.150.104.90]) by fwd31.sul.t-online.de
	with esmtp id 1ENQC2-0FuMQi0; Thu, 6 Oct 2005 09:29:30 +0200
Received: from atlas.denx.de (atlas.denx.de [10.0.0.14])
	by denx.de (Postfix) with ESMTP
	id D36DD42EED; Thu,  6 Oct 2005 09:29:29 +0200 (MEST)
Received: from atlas.denx.de (localhost.localdomain [127.0.0.1])
	by atlas.denx.de (Postfix) with ESMTP id 068D3353D93;
	Thu,  6 Oct 2005 09:29:24 +0200 (MEST)
To:	Arravind babu <aravindforl@yahoo.co.in>
Cc:	linux-mips@linux-mips.org
From:	Wolfgang Denk <wd@denx.de>
Subject: Re: Basic question w.r.t bootloader 
Mime-version: 1.0
Content-type: text/plain; charset=ISO-8859-1
Content-transfer-encoding: 8bit
In-reply-to: Your message of "Thu, 06 Oct 2005 07:53:32 BST."
             <20051006065332.6978.qmail@web8604.mail.in.yahoo.com> 
Date:	Thu, 06 Oct 2005 09:29:24 +0200
Message-Id: <20051006072924.068D3353D93@atlas.denx.de>
X-ID:	SOkMwmZVre8yPsLo7eQDPyoPWdgo6abFTP+ER70FSaoInTW0cZK+46@t-dialin.net
X-TOI-MSGID: 27b933b6-027c-49bd-aef5-d132cf33b1b1
Return-Path: <wd@denx.de>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9157
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: wd@denx.de
Precedence: bulk
X-list: linux-mips

In message <20051006065332.6978.qmail@web8604.mail.in.yahoo.com> you wrote:
> 
>        Generally how bootloader/bootflash code detects
> the size of RAM on the board? Is it hardcoded some
> where in the bootflash code or is it detected using
> memory chips ?

One method is to probe addresses (at N, 2*N, 4*N etc. starting with a
resonable value of N like 1 MB) until probing fails. See for  example
common/memsize.c in the U-Boot sources.

Best regards,

Wolfgang Denk

-- 
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de
The IQ of the group is the lowest IQ of a member of the group divided
by the number of people in the group.

From giometti@enneenne.com Thu Oct  6 08:33:47 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 06 Oct 2005 08:34:10 +0100 (BST)
Received: from 81-174-11-161.f5.ngi.it ([81.174.11.161]:57745 "EHLO
	gundam.enneenne.com") by ftp.linux-mips.org with ESMTP
	id S8133532AbVJFHdr (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 6 Oct 2005 08:33:47 +0100
Received: from giometti by gundam.enneenne.com with local (Exim 3.36 #1 (Debian))
	id 1ENQG9-0006c3-00
	for <linux-mips@linux-mips.org>; Thu, 06 Oct 2005 09:33:45 +0200
Date:	Thu, 6 Oct 2005 09:33:45 +0200
From:	Rodolfo Giometti <giometti@linux.it>
To:	linux-mips@linux-mips.org
Subject: au1x00 usb device status
Message-ID: <20051006073345.GB17583@gundam.enneenne.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Organization: Programmi e soluzioni GNU/Linux
X-PGP-Key: gpg --keyserver keyserver.penguin.de --recv-keys D25A5633
User-Agent: Mutt/1.5.5.1+cvs20040105i
Return-Path: <giometti@enneenne.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9158
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: giometti@linux.it
Precedence: bulk
X-list: linux-mips

I'm trying to enable usb device support on an au1x00 based board, but
I notice that such support is still not ported to 2.6 nor to usb
gadget.

Does someone working on it in order to coordinate the job? :)

Thanks in advance,

Rodolfo

-- 

GNU/Linux Solutions                  e-mail:    giometti@linux.it
Linux Device Driver                             giometti@enneenne.com
Embedded Systems                     home page: giometti.enneenne.com
UNIX programming                     phone:     +39 349 2432127

From swamim@sankhya.com Thu Oct  6 11:22:14 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 06 Oct 2005 11:22:35 +0100 (BST)
Received: from [210.212.208.205] ([210.212.208.205]:51072 "EHLO
	pdns.sankhya.co.in") by ftp.linux-mips.org with ESMTP
	id S8133538AbVJFKWO (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 6 Oct 2005 11:22:14 +0100
Received: from sankhya.com (sankhya-external [192.168.1.2])
	by pdns.sankhya.co.in (8.12.11/8.12.10) with ESMTP id j96AOFx1017978
	for <linux-mips@linux-mips.org>; Thu, 6 Oct 2005 15:54:17 +0530
Received: from sankhya.com (localhost [127.0.0.1])
	by sankhya.com (8.12.8/8.12.5) with ESMTP id j96ArSeb005998
	for <linux-mips@linux-mips.org>; Thu, 6 Oct 2005 16:23:28 +0530
Received: from localhost (swamim@localhost)
	by sankhya.com (8.12.8/8.12.5/Submit) with ESMTP id j96ArOXc005990
	for <linux-mips@linux-mips.org>; Thu, 6 Oct 2005 16:23:28 +0530
Date:	Thu, 6 Oct 2005 16:23:24 +0530 (IST)
From:	M Ranga Swami Reddy <swamim@sankhya.com>
To:	linux-mips@linux-mips.org
Subject: kernel build and test info for mips malta board
Message-ID: <Pine.LNX.4.44.0510061619470.11818-100000@linux42.sankhya.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Return-Path: <swamim@sankhya.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9159
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: swamim@sankhya.com
Precedence: bulk
X-list: linux-mips


Hello,

What is the latest kernel version tested with MIPS MALTA board? 

Your reply highly appreciated.

Many Thanks,
Swami


From ppopov@embeddedalley.com Thu Oct  6 16:33:14 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 06 Oct 2005 16:33:32 +0100 (BST)
Received: from smtp102.biz.mail.mud.yahoo.com ([68.142.200.237]:15009 "HELO
	smtp102.biz.mail.mud.yahoo.com") by ftp.linux-mips.org with SMTP
	id S8133541AbVJFPdO (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 6 Oct 2005 16:33:14 +0100
Received: (qmail 61886 invoked from network); 6 Oct 2005 15:33:06 -0000
Received: from unknown (HELO ?192.168.1.101?) (ppopov@embeddedalley.com@63.194.214.47 with plain)
  by smtp102.biz.mail.mud.yahoo.com with SMTP; 6 Oct 2005 15:33:06 -0000
Subject: Re: au1x00 usb device status
From:	Pete Popov <ppopov@embeddedalley.com>
Reply-To: ppopov@embeddedalley.com
To:	Rodolfo Giometti <giometti@linux.it>
Cc:	"'linux-mips@linux-mips.org'" <linux-mips@linux-mips.org>
In-Reply-To: <20051006073345.GB17583@gundam.enneenne.com>
References: <20051006073345.GB17583@gundam.enneenne.com>
Content-Type: text/plain
Organization: Embedded Alley Solutions, Inc
Date:	Thu, 06 Oct 2005 08:32:52 -0700
Message-Id: <1128612772.9971.34.camel@localhost.localdomain>
Mime-Version: 1.0
X-Mailer: Evolution 2.0.4 (2.0.4-4) 
Content-Transfer-Encoding: 7bit
Return-Path: <ppopov@embeddedalley.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9160
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ppopov@embeddedalley.com
Precedence: bulk
X-list: linux-mips

On Thu, 2005-10-06 at 09:33 +0200, Rodolfo Giometti wrote:
> I'm trying to enable usb device support on an au1x00 based board, but
> I notice that such support is still not ported to 2.6 nor to usb
> gadget.

USB Host should be working fine. USB Gadget on the Au1000,1100,1500,1550
just won't happen due to hw limitations. USB host and gadget on the 1200
are on hold at the moment. I'll let you know if that moves forward. We
already split out the pci bus dependencies from the echi driver and sent
David the patches. They'll be going upstream soon. Adding ehci host
support for the 1200 will be much easier then.

Pete



From anemo@mba.ocn.ne.jp Thu Oct  6 16:45:17 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 06 Oct 2005 16:45:38 +0100 (BST)
Received: from mba.ocn.ne.jp ([210.190.142.172]:47066 "EHLO smtp.mba.ocn.ne.jp")
	by ftp.linux-mips.org with ESMTP id S8133547AbVJFPpR (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Thu, 6 Oct 2005 16:45:17 +0100
Received: from localhost (p6235-ipad201funabasi.chiba.ocn.ne.jp [222.146.69.235])
	by smtp.mba.ocn.ne.jp (Postfix) with ESMTP id 532848A98;
	Fri,  7 Oct 2005 00:45:15 +0900 (JST)
Date:	Fri, 07 Oct 2005 00:43:59 +0900 (JST)
Message-Id: <20051007.004359.25909892.anemo@mba.ocn.ne.jp>
To:	linux-mips@linux-mips.org
Cc:	ralf@linux-mips.org
Subject: [PATCH] protect CU1 bit manipulation from preempt
From:	Atsushi Nemoto <anemo@mba.ocn.ne.jp>
X-Fingerprint: 6ACA 1623 39BD 9A94 9B1A  B746 CA77 FE94 2874 D52F
X-Pgp-Public-Key: http://wwwkeys.pgp.net/pks/lookup?op=get&search=0x2874D52F
X-Mailer: Mew version 3.3 on Emacs 21.4 / Mule 5.0 (SAKAKI)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Return-Path: <anemo@mba.ocn.ne.jp>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9161
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: anemo@mba.ocn.ne.jp
Precedence: bulk
X-list: linux-mips

The ptrace temporarily enable CP1 without fpu-ownership.  These
regions should be protected from preempt.

Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>

diff --git a/arch/mips/kernel/ptrace.c b/arch/mips/kernel/ptrace.c
--- a/arch/mips/kernel/ptrace.c
+++ b/arch/mips/kernel/ptrace.c
@@ -126,10 +126,12 @@ int ptrace_getfpregs (struct task_struct
 
 		__put_user (child->thread.fpu.hard.fcr31, data + 64);
 
+		preempt_disable();
 		flags = read_c0_status();
 		__enable_fpu();
 		__asm__ __volatile__("cfc1\t%0,$0" : "=r" (tmp));
 		write_c0_status(flags);
+		preempt_enable();
 		__put_user (tmp, data + 65);
 	} else {
 		__put_user (child->thread.fpu.soft.fcr31, data + 64);
@@ -284,10 +286,12 @@ asmlinkage int sys_ptrace(long request, 
 			if (!cpu_has_fpu)
 				break;
 
+			preempt_disable();
 			flags = read_c0_status();
 			__enable_fpu();
 			__asm__ __volatile__("cfc1\t%0,$0": "=r" (tmp));
 			write_c0_status(flags);
+			preempt_enable();
 			break;
 		}
 		case DSP_BASE ... DSP_BASE + 5: {
diff --git a/arch/mips/kernel/ptrace32.c b/arch/mips/kernel/ptrace32.c
--- a/arch/mips/kernel/ptrace32.c
+++ b/arch/mips/kernel/ptrace32.c
@@ -191,10 +191,12 @@ asmlinkage int sys32_ptrace(int request,
 			if (!cpu_has_fpu)
 				break;
 
+			preempt_disable();
 			flags = read_c0_status();
 			__enable_fpu();
 			__asm__ __volatile__("cfc1\t%0,$0": "=r" (tmp));
 			write_c0_status(flags);
+			preempt_enable();
 			break;
 		}
 		case DSP_BASE ... DSP_BASE + 5:

From giometti@enneenne.com Thu Oct  6 16:47:09 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 06 Oct 2005 16:47:28 +0100 (BST)
Received: from 81-174-11-161.f5.ngi.it ([81.174.11.161]:3225 "EHLO
	gundam.enneenne.com") by ftp.linux-mips.org with ESMTP
	id S8133547AbVJFPrJ (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 6 Oct 2005 16:47:09 +0100
Received: from giometti by gundam.enneenne.com with local (Exim 3.36 #1 (Debian))
	id 1ENXxW-0006d4-00; Thu, 06 Oct 2005 17:47:02 +0200
Date:	Thu, 6 Oct 2005 17:47:02 +0200
From:	Rodolfo Giometti <giometti@linux.it>
To:	Pete Popov <ppopov@embeddedalley.com>
Cc:	"'linux-mips@linux-mips.org'" <linux-mips@linux-mips.org>
Subject: Re: au1x00 usb device status
Message-ID: <20051006154702.GA11086@gundam.enneenne.com>
References: <20051006073345.GB17583@gundam.enneenne.com> <1128612772.9971.34.camel@localhost.localdomain>
Mime-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha1;
	protocol="application/pgp-signature"; boundary="6c2NcOVqGQ03X4Wi"
Content-Disposition: inline
In-Reply-To: <1128612772.9971.34.camel@localhost.localdomain>
Organization: Programmi e soluzioni GNU/Linux
X-PGP-Key: gpg --keyserver keyserver.penguin.de --recv-keys D25A5633
User-Agent: Mutt/1.5.5.1+cvs20040105i
Return-Path: <giometti@enneenne.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9162
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: giometti@linux.it
Precedence: bulk
X-list: linux-mips


--6c2NcOVqGQ03X4Wi
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Thu, Oct 06, 2005 at 08:32:52AM -0700, Pete Popov wrote:
> USB Host should be working fine. USB Gadget on the Au1000,1100,1500,1550
> just won't happen due to hw limitations. USB host and gadget on the 1200

Thanks for your answer!

Can you please explain to me (in brief :) which hw limitations are you
talking about? Do you mean that usb device support in Linux cannot be
implemented, or just that this can be done but with some restriction?

Thanks for your help,

Rodolfo

--=20

GNU/Linux Solutions                  e-mail:    giometti@linux.it
Linux Device Driver                             giometti@enneenne.com
Embedded Systems                     home page: giometti.enneenne.com
UNIX programming                     phone:     +39 349 2432127

--6c2NcOVqGQ03X4Wi
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: Digital signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFDRUb2QaTCYNJaVjMRAsZiAJ9oqksI9ASCkVwErXgFzeR+hAm6YgCgsHiw
jNYFtD7mVWmAmgAMFNA5re4=
=Dt0k
-----END PGP SIGNATURE-----

--6c2NcOVqGQ03X4Wi--

From ralf@linux-mips.org Thu Oct  6 17:41:00 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 06 Oct 2005 17:41:15 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:64014 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133533AbVJFQlA (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 6 Oct 2005 17:41:00 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j96Getud002174;
	Thu, 6 Oct 2005 17:40:55 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j96Geq7f002173;
	Thu, 6 Oct 2005 17:40:52 +0100
Date:	Thu, 6 Oct 2005 17:40:52 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Cc:	linux-mips@linux-mips.org
Subject: Re: [PATCH] protect CU1 bit manipulation from preempt
Message-ID: <20051006164052.GB15275@linux-mips.org>
References: <20051007.004359.25909892.anemo@mba.ocn.ne.jp>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20051007.004359.25909892.anemo@mba.ocn.ne.jp>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9163
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Fri, Oct 07, 2005 at 12:43:59AM +0900, Atsushi Nemoto wrote:

> The ptrace temporarily enable CP1 without fpu-ownership.  These
> regions should be protected from preempt.

Applied with quite some additions to take care of the MT ASE as well.

  Ralf

From ppopov@embeddedalley.com Thu Oct  6 17:42:38 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 06 Oct 2005 17:43:00 +0100 (BST)
Received: from smtp102.biz.mail.mud.yahoo.com ([68.142.200.237]:39017 "HELO
	smtp102.biz.mail.mud.yahoo.com") by ftp.linux-mips.org with SMTP
	id S8133533AbVJFQmi (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 6 Oct 2005 17:42:38 +0100
Received: (qmail 87433 invoked from network); 6 Oct 2005 16:41:27 -0000
Received: from unknown (HELO ?192.168.1.101?) (ppopov@embeddedalley.com@71.128.175.242 with plain)
  by smtp102.biz.mail.mud.yahoo.com with SMTP; 6 Oct 2005 16:41:27 -0000
Subject: Re: au1x00 usb device status
From:	Pete Popov <ppopov@embeddedalley.com>
Reply-To: ppopov@embeddedalley.com
To:	Rodolfo Giometti <giometti@linux.it>
Cc:	"'linux-mips@linux-mips.org'" <linux-mips@linux-mips.org>
In-Reply-To: <20051006154702.GA11086@gundam.enneenne.com>
References: <20051006073345.GB17583@gundam.enneenne.com>
	 <1128612772.9971.34.camel@localhost.localdomain>
	 <20051006154702.GA11086@gundam.enneenne.com>
Content-Type: text/plain
Organization: Embedded Alley Solutions, Inc
Date:	Thu, 06 Oct 2005 09:41:14 -0700
Message-Id: <1128616874.9971.47.camel@localhost.localdomain>
Mime-Version: 1.0
X-Mailer: Evolution 2.0.4 (2.0.4-4) 
Content-Transfer-Encoding: 7bit
Return-Path: <ppopov@embeddedalley.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9164
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ppopov@embeddedalley.com
Precedence: bulk
X-list: linux-mips

On Thu, 2005-10-06 at 17:47 +0200, Rodolfo Giometti wrote:
> On Thu, Oct 06, 2005 at 08:32:52AM -0700, Pete Popov wrote:
> > USB Host should be working fine. USB Gadget on the Au1000,1100,1500,1550
> > just won't happen due to hw limitations. USB host and gadget on the 1200
> 
> Thanks for your answer!
> 
> Can you please explain to me (in brief :) which hw limitations are you
> talking about? Do you mean that usb device support in Linux cannot be
> implemented, or just that this can be done but with some restriction?

Timing issues with the Au1x00 (not the au1200) make the Linux gadget
implementation extremely difficult to support. If you don't service the
usb interrupt within a certain amount of time, you lose the status and
the gadget loses its state.

Pete


From raiko@niisi.msk.ru Thu Oct  6 18:24:07 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 06 Oct 2005 18:24:31 +0100 (BST)
Received: from t111.niisi.ras.ru ([193.232.173.111]:42929 "EHLO
	t111.niisi.ras.ru") by ftp.linux-mips.org with ESMTP
	id S8133550AbVJFRYH (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 6 Oct 2005 18:24:07 +0100
Received: from t111.niisi.ras.ru (localhost [127.0.0.1])
	by t111.niisi.ras.ru (8.13.4/8.12.11) with ESMTP id j96HO6UB032192
	for <linux-mips@linux-mips.org>; Thu, 6 Oct 2005 21:24:06 +0400
Received: (from uucp@localhost)
	by t111.niisi.ras.ru (8.13.4/8.13.4/Submit) with UUCP id j96HO6QF032189
	for linux-mips@linux-mips.org; Thu, 6 Oct 2005 21:24:06 +0400
Received: from [192.168.173.2] (t34 [193.232.173.34])
	by aa19.niisi.msk.ru (8.12.8/8.12.8) with ESMTP id j96HNp3t021489
	for <linux-mips@linux-mips.org>; Thu, 6 Oct 2005 21:23:51 +0400
Message-ID: <43455D2D.1010901@niisi.msk.ru>
Date:	Thu, 06 Oct 2005 21:21:49 +0400
From:	"Gleb O. Raiko" <raiko@niisi.msk.ru>
Organization: NIISI RAN
User-Agent: Mozilla Thunderbird 1.0.7 (Windows/20050923)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	linux-mips@linux-mips.org
Subject: Bug in the syscall tracing code
Content-Type: text/plain; charset=KOI8-R; format=flowed
Content-Transfer-Encoding: 7bit
Return-Path: <raiko@niisi.msk.ru>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9165
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: raiko@niisi.msk.ru
Precedence: bulk
X-list: linux-mips

Hello,

The story continues. The last fix of the syscall tracing code was wrong, 
unfortunately. (The bug was a user could invoke any function in the 
kernel. The fix was not to use t2 as pointer to a syscall, s0 was chosen 
for it.) The problem we discovered is a few syscalls do SAVE_STATIC 
(those declared as save_static_function), so s0 (which holds pointer to 
the syscall at the time the syscall is invoked) is saved on the stack 
overwriting a value saved from the process being traced. No wonder, s0 
that restored on syscall exit differs from s0 saved on syscall enter.

See, arch/mips/kernel/scall32-o32.S, syscall_trace_entry, for example. 
The rest of ABIs are the same.

There are several ways to fix this:

1. Make syscall handling code to be close to other arches. I mean, check 
for the trace flag first, then parse arguments and invoke a syscall.

2. Remove save_static_functions and do SAVE_STATIC early for several 
syscalls (yes, one big switch or its asm equivalent).

3. Store t2 in pt_regs (it means we have to expand this structure).

4. I know there should be yet another way.

Any ideas ?

Regards,
Gleb.

From earlm@mips.com Thu Oct  6 18:59:26 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 06 Oct 2005 18:59:44 +0100 (BST)
Received: from 209-232-97-206.ded.pacbell.net ([209.232.97.206]:52097 "EHLO
	dns0.mips.com") by ftp.linux-mips.org with ESMTP id S8133554AbVJFR70 convert rfc822-to-8bit
	(ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 6 Oct 2005 18:59:26 +0100
Received: from mercury.mips.com (sbcns-dmz [209.232.97.193])
	by dns0.mips.com (8.12.11/8.12.11) with ESMTP id j96HxItW012648;
	Thu, 6 Oct 2005 10:59:18 -0700 (PDT)
Received: from exchange.MIPS.COM (exchange [192.168.20.29])
	by mercury.mips.com (8.12.9/8.12.11) with ESMTP id j96HxH17003741;
	Thu, 6 Oct 2005 10:59:17 -0700 (PDT)
X-MimeOLE: Produced By Microsoft Exchange V6.5.7226.0
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 8BIT
Subject: RE: Basic question w.r.t bootloader 
Date:	Thu, 6 Oct 2005 10:59:16 -0700
Message-ID: <3CB54817FDF733459B230DD27C690CEC010493E5@Exchange.MIPS.COM>
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Thread-Topic: Basic question w.r.t bootloader 
Thread-Index: AcXKR9IIYLZO+At/QcS2ik0hx9cfSwAVkVaA
From:	"Mitchell, Earl" <earlm@mips.com>
To:	"Arravind babu" <aravindforl@yahoo.co.in>
Cc:	<linux-mips@linux-mips.org>
X-Scanned-By: MIMEDefang 2.39
Return-Path: <earlm@mips.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9166
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: earlm@mips.com
Precedence: bulk
X-list: linux-mips



If its a DRAM DIMM module then SW reads info
about that RAM via the SPD interface.
SPD = Serial Presence Detect 
This is typically an I2C interface so
SW can bit bang it. 

SPD provides more info than just size.
For example on some systems you need to
know the RAS/CAS params and various
wait state settings in order to program your
memory controller for optimal performance. 
This is how PCs are able to configure themselves 
to work with standard modules. For more info
checkout this site ...

http://www.pcguide.com/art/sdram.htm

For SRAMs the HW guys usually provide
some set of registers for SW to read 
info its needs like size. And sometimes
they don't so you have to use address
probing tricks as Wolfgang described. 

-earlm


> -----Original Message-----
> From: linux-mips-bounce@linux-mips.org
> [mailto:linux-mips-bounce@linux-mips.org]On Behalf Of Wolfgang Denk
> Sent: Thursday, October 06, 2005 12:29 AM
> To: Arravind babu
> Cc: linux-mips@linux-mips.org
> Subject: Re: Basic question w.r.t bootloader 
> 
> 
> In message 
> <20051006065332.6978.qmail@web8604.mail.in.yahoo.com> you wrote:
> > 
> >        Generally how bootloader/bootflash code detects
> > the size of RAM on the board? Is it hardcoded some
> > where in the bootflash code or is it detected using
> > memory chips ?
> 
> One method is to probe addresses (at N, 2*N, 4*N etc. starting with a
> resonable value of N like 1 MB) until probing fails. See for  example
> common/memsize.c in the U-Boot sources.
> 
> Best regards,
> 
> Wolfgang Denk
> 
> -- 
> Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
> Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de
> The IQ of the group is the lowest IQ of a member of the group divided
> by the number of people in the group.
> 
> 

From greg.weeks@timesys.com Thu Oct  6 19:36:28 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 06 Oct 2005 19:36:44 +0100 (BST)
Received: from mail.timesys.com ([65.117.135.102]:26571 "EHLO
	exchange.timesys.com") by ftp.linux-mips.org with ESMTP
	id S8133554AbVJFSg2 (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 6 Oct 2005 19:36:28 +0100
Received: from [192.168.2.27] ([192.168.2.27]) by exchange.timesys.com with Microsoft SMTPSVC(5.0.2195.6713);
	 Thu, 6 Oct 2005 14:33:52 -0400
Message-ID: <43456EA9.8020209@timesys.com>
Date:	Thu, 06 Oct 2005 14:36:25 -0400
From:	Greg Weeks <greg.weeks@timesys.com>
User-Agent: Mozilla Thunderbird 1.0.6 (X11/20050716)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	linux-mips@linux-mips.org
CC:	"Cooper, John" <john.cooper@timesys.com>
Subject: PREEMPT
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 06 Oct 2005 18:33:52.0500 (UTC) FILETIME=[803F3340:01C5CAA4]
Return-Path: <greg.weeks@timesys.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9167
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: greg.weeks@timesys.com
Precedence: bulk
X-list: linux-mips

Does anyone know of any current problems with CONFIG_PREEMPT on a 4kc 
malta board? We're seeing some oddness in the floating point emulator 
with PREEMPT_RT and wondered if it was in our RT code, or if it's from 
the base kernel code.

Greg W

From ralf@linux-mips.org Thu Oct  6 19:47:02 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 06 Oct 2005 19:47:19 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:27154 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133554AbVJFSrC (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 6 Oct 2005 19:47:02 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j96IkufU012201;
	Thu, 6 Oct 2005 19:46:56 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j96IkuB9012200;
	Thu, 6 Oct 2005 19:46:56 +0100
Date:	Thu, 6 Oct 2005 19:46:56 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	Greg Weeks <greg.weeks@timesys.com>
Cc:	linux-mips@linux-mips.org, "Cooper, John" <john.cooper@timesys.com>
Subject: Re: PREEMPT
Message-ID: <20051006184656.GA12173@linux-mips.org>
References: <43456EA9.8020209@timesys.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <43456EA9.8020209@timesys.com>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9168
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Thu, Oct 06, 2005 at 02:36:25PM -0400, Greg Weeks wrote:

> Does anyone know of any current problems with CONFIG_PREEMPT on a 4kc 
> malta board? We're seeing some oddness in the floating point emulator 
> with PREEMPT_RT and wondered if it was in our RT code, or if it's from 
> the base kernel code.

No known problem in current problems in that area.

  Ralf

From greg.weeks@timesys.com Thu Oct  6 19:52:29 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 06 Oct 2005 19:52:46 +0100 (BST)
Received: from mail.timesys.com ([65.117.135.102]:7491 "EHLO
	exchange.timesys.com") by ftp.linux-mips.org with ESMTP
	id S8133558AbVJFSw3 (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 6 Oct 2005 19:52:29 +0100
Received: from [192.168.2.27] ([192.168.2.27]) by exchange.timesys.com with Microsoft SMTPSVC(5.0.2195.6713);
	 Thu, 6 Oct 2005 14:49:49 -0400
Message-ID: <43457266.3090208@timesys.com>
Date:	Thu, 06 Oct 2005 14:52:22 -0400
From:	Greg Weeks <greg.weeks@timesys.com>
User-Agent: Mozilla Thunderbird 1.0.6 (X11/20050716)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	Ralf Baechle <ralf@linux-mips.org>
CC:	linux-mips@linux-mips.org, "Cooper, John" <john.cooper@timesys.com>
Subject: Re: PREEMPT
References: <43456EA9.8020209@timesys.com> <20051006184656.GA12173@linux-mips.org>
In-Reply-To: <20051006184656.GA12173@linux-mips.org>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 06 Oct 2005 18:49:49.0953 (UTC) FILETIME=[BAEEEF10:01C5CAA6]
Return-Path: <greg.weeks@timesys.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9169
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: greg.weeks@timesys.com
Precedence: bulk
X-list: linux-mips

Ralf Baechle wrote:

>On Thu, Oct 06, 2005 at 02:36:25PM -0400, Greg Weeks wrote:
>
>  
>
>>Does anyone know of any current problems with CONFIG_PREEMPT on a 4kc 
>>malta board? We're seeing some oddness in the floating point emulator 
>>with PREEMPT_RT and wondered if it was in our RT code, or if it's from 
>>the base kernel code.
>>    
>>
>
>No known problem in current problems in that area.
>
> 
>
I'd remembered some problems ages ago, but had thought they'd been 
fixed. John was just picking my brain about it so I thought I'd ask to 
be sure.

Greg W


From ralf@linux-mips.org Thu Oct  6 19:55:10 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 06 Oct 2005 19:55:27 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:46095 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133558AbVJFSzK (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 6 Oct 2005 19:55:10 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j96It4pu017418;
	Thu, 6 Oct 2005 19:55:04 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j96It4MF017417;
	Thu, 6 Oct 2005 19:55:04 +0100
Date:	Thu, 6 Oct 2005 19:55:04 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	Greg Weeks <greg.weeks@timesys.com>
Cc:	linux-mips@linux-mips.org, "Cooper, John" <john.cooper@timesys.com>
Subject: Re: PREEMPT
Message-ID: <20051006185504.GD15275@linux-mips.org>
References: <43456EA9.8020209@timesys.com> <20051006184656.GA12173@linux-mips.org> <43457266.3090208@timesys.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <43457266.3090208@timesys.com>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9170
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Thu, Oct 06, 2005 at 02:52:22PM -0400, Greg Weeks wrote:

> I'd remembered some problems ages ago, but had thought they'd been 
> fixed. John was just picking my brain about it so I thought I'd ask to 
> be sure.

The problems I recall were all related to being preempted just while
fiddling with the hardware FPU - can't happen on the fpu-less 4Kc.
Another issue fixesd recently even though more cosmetic were a bunch
of global variables.

  Ralf

From john.cooper@timesys.com Thu Oct  6 20:11:04 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 06 Oct 2005 20:11:19 +0100 (BST)
Received: from mail.timesys.com ([65.117.135.102]:55964 "EHLO
	exchange.timesys.com") by ftp.linux-mips.org with ESMTP
	id S8133558AbVJFTLE (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 6 Oct 2005 20:11:04 +0100
Received: from [127.0.0.1] ([192.168.2.230]) by exchange.timesys.com with Microsoft SMTPSVC(5.0.2195.6713);
	 Thu, 6 Oct 2005 15:08:27 -0400
Message-ID: <43457563.60505@timesys.com>
Date:	Thu, 06 Oct 2005 15:05:07 -0400
From:	john cooper <john.cooper@timesys.com>
User-Agent: Mozilla Thunderbird 0.8 (X11/20040913)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	Ralf Baechle <ralf@linux-mips.org>
CC:	Greg Weeks <greg.weeks@timesys.com>, linux-mips@linux-mips.org,
	john cooper <john.cooper@timesys.com>
Subject: Re: PREEMPT
References: <43456EA9.8020209@timesys.com> <20051006184656.GA12173@linux-mips.org> <43457266.3090208@timesys.com> <20051006185504.GD15275@linux-mips.org>
In-Reply-To: <20051006185504.GD15275@linux-mips.org>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 06 Oct 2005 19:08:28.0890 (UTC) FILETIME=[55DF2BA0:01C5CAA9]
Return-Path: <john.cooper@timesys.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9171
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: john.cooper@timesys.com
Precedence: bulk
X-list: linux-mips

Ralf Baechle wrote:
> On Thu, Oct 06, 2005 at 02:52:22PM -0400, Greg Weeks wrote:
> 
> 
>>I'd remembered some problems ages ago, but had thought they'd been 
>>fixed. John was just picking my brain about it so I thought I'd ask to 
>>be sure.
> 
> 
> The problems I recall were all related to being preempted just while
> fiddling with the hardware FPU - can't happen on the fpu-less 4Kc.
> Another issue fixesd recently even though more cosmetic were a bunch
> of global variables.

The code base I'm dealing with is a 2.6.13 derivative
with PREEMPT_RT support.  Looks like the problem was
due to PREEMPT_RT confusing fpu_emulator_cop1Handler()
resulting in a SIGBUS nailing the associated task.

I have it sort of working for soft FPU but expect it
requires some attention to safely access a HW FPU where
emulation assistance is needed.

-john

-- 
john.cooper@timesys.com

From sjhill@realitydiluted.com Thu Oct  6 20:45:41 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 06 Oct 2005 20:45:58 +0100 (BST)
Received: from eth13.com-link.com ([208.242.241.164]:21389 "EHLO
	real.realitydiluted.com") by ftp.linux-mips.org with ESMTP
	id S8133563AbVJFTpl (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 6 Oct 2005 20:45:41 +0100
Received: from sjhill by real.realitydiluted.com with local (Exim 4.52 #1 (Debian))
	id 1ENakd-0005up-Pl; Thu, 06 Oct 2005 13:45:55 -0500
Subject: Re: PREEMPT
In-Reply-To: <43457563.60505@timesys.com>
To:	john cooper <john.cooper@timesys.com>
Date:	Thu, 6 Oct 2005 13:45:55 -0500 (CDT)
CC:	Ralf Baechle <ralf@linux-mips.org>,
	Greg Weeks <greg.weeks@timesys.com>, linux-mips@linux-mips.org
X-Mailer: ELM [version 2.4ME+ PL100 (25)]
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset=US-ASCII
Message-Id: <E1ENakd-0005up-Pl@real.realitydiluted.com>
From:	sjhill@realitydiluted.com
Return-Path: <sjhill@realitydiluted.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9172
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: sjhill@realitydiluted.com
Precedence: bulk
X-list: linux-mips

> The code base I'm dealing with is a 2.6.13 derivative
> with PREEMPT_RT support.  Looks like the problem was
> due to PREEMPT_RT confusing fpu_emulator_cop1Handler()
> resulting in a SIGBUS nailing the associated task.
> 
> I have it sort of working for soft FPU but expect it
> requires some attention to safely access a HW FPU where
> emulation assistance is needed.
> 
Um, did no one have a look at Atsushi Nemoto's patch earlier today
that addressed pre-emption and CPU1, or am I missing something?

-Steve

From ths@networkno.de Thu Oct  6 21:53:20 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 06 Oct 2005 21:53:35 +0100 (BST)
Received: from mx02.qsc.de ([213.148.130.14]:8590 "EHLO mx02.qsc.de")
	by ftp.linux-mips.org with ESMTP id S3465660AbVJFUxU (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Thu, 6 Oct 2005 21:53:20 +0100
Received: from port-195-158-179-121.dynamic.qsc.de ([195.158.179.121] helo=hattusa.textio)
	by mx02.qsc.de with esmtp (Exim 3.35 #1)
	id 1ENcjl-00005f-00; Thu, 06 Oct 2005 22:53:09 +0200
Received: from ths by hattusa.textio with local (Exim 4.54)
	id 1ENcjk-0007b8-ST; Thu, 06 Oct 2005 22:53:08 +0200
Date:	Thu, 6 Oct 2005 22:53:08 +0200
To:	"Gleb O. Raiko" <raiko@niisi.msk.ru>
Cc:	linux-mips@linux-mips.org
Subject: Re: Bug in the syscall tracing code
Message-ID: <20051006205308.GB31717@hattusa.textio>
References: <43455D2D.1010901@niisi.msk.ru>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <43455D2D.1010901@niisi.msk.ru>
User-Agent: Mutt/1.5.11
From:	Thiemo Seufer <ths@networkno.de>
Return-Path: <ths@networkno.de>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9173
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ths@networkno.de
Precedence: bulk
X-list: linux-mips

Gleb O. Raiko wrote:
> Hello,
> 
> The story continues. The last fix of the syscall tracing code was wrong, 
> unfortunately. (The bug was a user could invoke any function in the 
> kernel. The fix was not to use t2 as pointer to a syscall, s0 was chosen 
> for it.) The problem we discovered is a few syscalls do SAVE_STATIC 
> (those declared as save_static_function), so s0 (which holds pointer to 
> the syscall at the time the syscall is invoked) is saved on the stack 
> overwriting a value saved from the process being traced. No wonder, s0 
> that restored on syscall exit differs from s0 saved on syscall enter.
> 
> See, arch/mips/kernel/scall32-o32.S, syscall_trace_entry, for example. 
> The rest of ABIs are the same.
> 
> There are several ways to fix this:
> 
> 1. Make syscall handling code to be close to other arches. I mean, check 
> for the trace flag first, then parse arguments and invoke a syscall.
> 
> 2. Remove save_static_functions and do SAVE_STATIC early for several 
> syscalls (yes, one big switch or its asm equivalent).
> 
> 3. Store t2 in pt_regs (it means we have to expand this structure).
> 
> 4. I know there should be yet another way.

- Use the k1 slot instead of s0 to save the function pointer.


Thiemo

From ddaney@avtrex.com Thu Oct  6 22:13:26 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 06 Oct 2005 22:13:43 +0100 (BST)
Received: from adsl-67-116-42-147.dsl.sntc01.pacbell.net ([67.116.42.147]:29444
	"EHLO avtrex.com") by ftp.linux-mips.org with ESMTP
	id S3465664AbVJFVN0 (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 6 Oct 2005 22:13:26 +0100
Received: from [192.168.7.26] ([192.168.7.3]) by avtrex.com with Microsoft SMTPSVC(6.0.3790.1830);
	 Thu, 6 Oct 2005 14:13:24 -0700
Message-ID: <43459374.5080802@avtrex.com>
Date:	Thu, 06 Oct 2005 14:13:24 -0700
From:	David Daney <ddaney@avtrex.com>
User-Agent: Mozilla Thunderbird 1.0.7-1.1.fc3 (X11/20050929)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	Thiemo Seufer <ths@networkno.de>
CC:	"Gleb O. Raiko" <raiko@niisi.msk.ru>, linux-mips@linux-mips.org
Subject: Re: Bug in the syscall tracing code
References: <43455D2D.1010901@niisi.msk.ru> <20051006205308.GB31717@hattusa.textio>
In-Reply-To: <20051006205308.GB31717@hattusa.textio>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 06 Oct 2005 21:13:24.0497 (UTC) FILETIME=[C99A0810:01C5CABA]
Return-Path: <ddaney@avtrex.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9174
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ddaney@avtrex.com
Precedence: bulk
X-list: linux-mips

Thiemo Seufer wrote:
> Gleb O. Raiko wrote:
> 
>>Hello,
>>
>>The story continues. The last fix of the syscall tracing code was wrong, 
>>unfortunately. (The bug was a user could invoke any function in the 
>>kernel. The fix was not to use t2 as pointer to a syscall, s0 was chosen 
>>for it.) The problem we discovered is a few syscalls do SAVE_STATIC 
>>(those declared as save_static_function), so s0 (which holds pointer to 
>>the syscall at the time the syscall is invoked) is saved on the stack 
>>overwriting a value saved from the process being traced. No wonder, s0 
>>that restored on syscall exit differs from s0 saved on syscall enter.
>>
>>See, arch/mips/kernel/scall32-o32.S, syscall_trace_entry, for example. 
>>The rest of ABIs are the same.
>>
>>There are several ways to fix this:
>>
>>1. Make syscall handling code to be close to other arches. I mean, check 
>>for the trace flag first, then parse arguments and invoke a syscall.
>>
>>2. Remove save_static_functions and do SAVE_STATIC early for several 
>>syscalls (yes, one big switch or its asm equivalent).
>>
>>3. Store t2 in pt_regs (it means we have to expand this structure).
>>
>>4. I know there should be yet another way.
> 
> 
> - Use the k1 slot instead of s0 to save the function pointer.
> 
That is the conclusion I came to in:

http://www.linux-mips.org/cgi-bin/mesg.cgi?a=linux-mips&i=4207C3E0.7070405%40avtrex.com

IIRC, k0 is already used for something.

David daney.

From colin@realtek.com.tw Fri Oct  7 07:32:03 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 07 Oct 2005 07:32:20 +0100 (BST)
Received: from mf2.realtek.com.tw ([220.128.56.22]:24079 "EHLO
	mf2.realtek.com.tw") by ftp.linux-mips.org with ESMTP
	id S8133569AbVJGGcD (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Fri, 7 Oct 2005 07:32:03 +0100
Received: from msx.realtek.com.tw (unverified [172.21.1.77]) by mf2.realtek.com.tw
 (Clearswift SMTPRS 5.1.4) with ESMTP id <T73d7e97391dc803816180c@mf2.realtek.com.tw> for <linux-mips@linux-mips.org>;
 Fri, 7 Oct 2005 14:33:59 +0800
Received: from rtpdii3098 ([172.21.98.16])
          by msx.realtek.com.tw (Lotus Domino Release 6.5.3)
          with ESMTP id 2005100714314478-331927 ;
          Fri, 7 Oct 2005 14:31:44 +0800 
Message-ID: <002701c5cb08$c9682630$106215ac@realtek.com.tw>
From:	"colin" <colin@realtek.com.tw>
To:	<linux-mips@linux-mips.org>
Subject: gcc of SDE6 cannot compile C++ applications
Date:	Fri, 7 Oct 2005 14:31:44 +0800
MIME-Version: 1.0
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1506
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1506
X-MIMETrack: Itemize by SMTP Server on msx/Realtek(Release 6.5.3|September 14, 2004) at
 2005/10/07 =?Bog5?B?pFWkyCAwMjozMTo0NQ==?=,
	Serialize by Router on msx/Realtek(Release 6.5.3|September 14, 2004) at
 2005/10/07 =?Bog5?B?pFWkyCAwMjozMTo0NQ==?=,
	Serialize complete at 2005/10/07 =?Bog5?B?pFWkyCAwMjozMTo0NQ==?=
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
	charset="big5"
Return-Path: <colin@realtek.com.tw>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9175
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: colin@realtek.com.tw
Precedence: bulk
X-list: linux-mips


Hi there,
I upgrade my SDE from 5 to 6.
Before upgrading, we can compile C++ applications. After doing that, C++
cannot be compiled by the gcc of SDE6.
The warning message is like this:
    mipsel-linux-gcc: main.cpp: C++ compiler not installed on this system

I found that MIPS offers C++ compiler running on MIPS.
Does MIPS want us to compile C++ on MIPS, not on X86?

Regards,
Colin


From raiko@niisi.msk.ru Fri Oct  7 08:48:26 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 07 Oct 2005 08:48:48 +0100 (BST)
Received: from t111.niisi.ras.ru ([193.232.173.111]:36816 "EHLO
	t111.niisi.ras.ru") by ftp.linux-mips.org with ESMTP
	id S8133556AbVJGHsP (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Fri, 7 Oct 2005 08:48:15 +0100
Received: from t111.niisi.ras.ru (localhost [127.0.0.1])
	by t111.niisi.ras.ru (8.13.4/8.12.11) with ESMTP id j977m5Ti008827;
	Fri, 7 Oct 2005 11:48:08 +0400
Received: (from uucp@localhost)
	by t111.niisi.ras.ru (8.13.4/8.13.4/Submit) with UUCP id j977m5Hn008824;
	Fri, 7 Oct 2005 11:48:05 +0400
Received: from [192.168.173.2] (t34 [193.232.173.34])
	by aa19.niisi.msk.ru (8.12.8/8.12.8) with ESMTP id j977je3t031962;
	Fri, 7 Oct 2005 11:45:40 +0400
Message-ID: <4346272B.4010100@niisi.msk.ru>
Date:	Fri, 07 Oct 2005 11:43:39 +0400
From:	"Gleb O. Raiko" <raiko@niisi.msk.ru>
Organization: NIISI RAN
User-Agent: Mozilla Thunderbird 1.0.7 (Windows/20050923)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	Thiemo Seufer <ths@networkno.de>
CC:	linux-mips@linux-mips.org
Subject: Re: Bug in the syscall tracing code
References: <43455D2D.1010901@niisi.msk.ru> <20051006205308.GB31717@hattusa.textio>
In-Reply-To: <20051006205308.GB31717@hattusa.textio>
Content-Type: text/plain; charset=KOI8-R; format=flowed
Content-Transfer-Encoding: 7bit
Return-Path: <raiko@niisi.msk.ru>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9176
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: raiko@niisi.msk.ru
Precedence: bulk
X-list: linux-mips

Thiemo Seufer wrote:
> - Use the k1 slot instead of s0 to save the function pointer.

Unfortunately, k0, k1 cannot be used. We shall withstand 
do_syscall_trace. It implies going to the user mode and back.

Regards,
Gleb.

From raiko@niisi.msk.ru Fri Oct  7 08:54:07 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 07 Oct 2005 08:54:25 +0100 (BST)
Received: from t111.niisi.ras.ru ([193.232.173.111]:29890 "EHLO
	t111.niisi.ras.ru") by ftp.linux-mips.org with ESMTP
	id S8133556AbVJGHyH (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Fri, 7 Oct 2005 08:54:07 +0100
Received: from t111.niisi.ras.ru (localhost [127.0.0.1])
	by t111.niisi.ras.ru (8.13.4/8.12.11) with ESMTP id j977s4kM009745;
	Fri, 7 Oct 2005 11:54:04 +0400
Received: (from uucp@localhost)
	by t111.niisi.ras.ru (8.13.4/8.13.4/Submit) with UUCP id j977s4Ox009742;
	Fri, 7 Oct 2005 11:54:04 +0400
Received: from [192.168.173.2] (t34 [193.232.173.34])
	by aa19.niisi.msk.ru (8.12.8/8.12.8) with ESMTP id j977qi3t032161;
	Fri, 7 Oct 2005 11:52:44 +0400
Message-ID: <434628D3.9050307@niisi.msk.ru>
Date:	Fri, 07 Oct 2005 11:50:43 +0400
From:	"Gleb O. Raiko" <raiko@niisi.msk.ru>
Organization: NIISI RAN
User-Agent: Mozilla Thunderbird 1.0.7 (Windows/20050923)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	David Daney <ddaney@avtrex.com>
CC:	Thiemo Seufer <ths@networkno.de>, linux-mips@linux-mips.org
Subject: Re: Bug in the syscall tracing code
References: <43455D2D.1010901@niisi.msk.ru> <20051006205308.GB31717@hattusa.textio> <43459374.5080802@avtrex.com>
In-Reply-To: <43459374.5080802@avtrex.com>
Content-Type: text/plain; charset=KOI8-R; format=flowed
Content-Transfer-Encoding: 7bit
Return-Path: <raiko@niisi.msk.ru>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9177
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: raiko@niisi.msk.ru
Precedence: bulk
X-list: linux-mips

David Daney wrote:
> That is the conclusion I came to in:
> 
> http://www.linux-mips.org/cgi-bin/mesg.cgi?a=linux-mips&i=4207C3E0.7070405%40avtrex.com 

Saving in the PT_SCRATCH area (pad0 in C) was a solution for 2.4. 
Unfortunately, syscall arguments are stored there (and that's why pad0 
exists in pt_regs after all). So, using PT_SCRATCH as a temporary 
storage for t2 will break tracing syscalls with more than 4 args for o32 
ABI.

Regards,
Gleb.

From colin@realtek.com.tw Fri Oct  7 09:21:52 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 07 Oct 2005 09:22:12 +0100 (BST)
Received: from mf2.realtek.com.tw ([220.128.56.22]:26895 "EHLO
	mf2.realtek.com.tw") by ftp.linux-mips.org with ESMTP
	id S8133560AbVJGIVw (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Fri, 7 Oct 2005 09:21:52 +0100
Received: from msx.realtek.com.tw (unverified [172.21.1.77]) by mf2.realtek.com.tw
 (Clearswift SMTPRS 5.1.4) with ESMTP id <T73d84dedfadc803816180c@mf2.realtek.com.tw> for <linux-mips@linux-mips.org>;
 Fri, 7 Oct 2005 16:23:44 +0800
Received: from rtpdii3098 ([172.21.98.16])
          by msx.realtek.com.tw (Lotus Domino Release 6.5.3)
          with ESMTP id 2005100716212942-333928 ;
          Fri, 7 Oct 2005 16:21:29 +0800 
Message-ID: <005a01c5cb18$1e2df870$106215ac@realtek.com.tw>
From:	"colin" <colin@realtek.com.tw>
To:	<linux-mips@linux-mips.org>
Subject: Is CONFIG_CPU_MIPS32_R2 workable?
Date:	Fri, 7 Oct 2005 16:21:29 +0800
MIME-Version: 1.0
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1506
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1506
X-MIMETrack: Itemize by SMTP Server on msx/Realtek(Release 6.5.3|September 14, 2004) at
 2005/10/07 =?Bog5?B?pFWkyCAwNDoyMToyOQ==?=,
	Serialize by Router on msx/Realtek(Release 6.5.3|September 14, 2004) at
 2005/10/07 =?Bog5?B?pFWkyCAwNDoyMTozMA==?=,
	Serialize complete at 2005/10/07 =?Bog5?B?pFWkyCAwNDoyMTozMA==?=
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
	charset="big5"
Return-Path: <colin@realtek.com.tw>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9178
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: colin@realtek.com.tw
Precedence: bulk
X-list: linux-mips


Hi all,
Has anyone successfully run 2.6.13 with this option on?
I backported this option to 2.6.12, and failed running on our platform.

Regards,
Colin


From nigel@mips.com Fri Oct  7 09:38:51 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 07 Oct 2005 09:39:06 +0100 (BST)
Received: from alg145.algor.co.uk ([62.254.210.145]:63244 "EHLO
	dmz.algor.co.uk") by ftp.linux-mips.org with ESMTP id S8133560AbVJGIiu
	(ORCPT <rfc822;linux-mips@linux-mips.org>);
	Fri, 7 Oct 2005 09:38:50 +0100
Received: from alg158.algor.co.uk ([62.254.210.158] helo=olympia.mips.com)
	by dmz.algor.co.uk with esmtp (Exim 3.35 #1 (Debian))
	id 1ENni8-00012U-00; Fri, 07 Oct 2005 09:36:12 +0100
Received: from wapping.algor.co.uk ([172.20.192.98])
	by olympia.mips.com with esmtp (Exim 3.36 #1 (Debian))
	id 1ENnkE-0000oc-00; Fri, 07 Oct 2005 09:38:22 +0100
Message-ID: <43463403.8080407@mips.com>
Date:	Fri, 07 Oct 2005 09:38:27 +0100
From:	Nigel Stephens <nigel@mips.com>
Organization: MIPS Technologies
User-Agent: Debian Thunderbird 1.0.2 (X11/20050817)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	colin <colin@realtek.com.tw>
CC:	linux-mips@linux-mips.org
Subject: Re: gcc of SDE6 cannot compile C++ applications
References: <002701c5cb08$c9682630$106215ac@realtek.com.tw>
In-Reply-To: <002701c5cb08$c9682630$106215ac@realtek.com.tw>
Content-Type: text/plain; charset=Big5
Content-Transfer-Encoding: 7bit
X-MTUK-Scanner:	Found to be clean
X-MTUK-SpamCheck: not spam (whitelisted), SpamAssassin (score=-3.766,
	required 4, AWL, BAYES_00, XENO_CONTENT)
Return-Path: <nigel@mips.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9179
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: nigel@mips.com
Precedence: bulk
X-list: linux-mips



colin wrote:

>Hi there,
>I upgrade my SDE from 5 to 6.
>Before upgrading, we can compile C++ applications. After doing that, C++
>cannot be compiled by the gcc of SDE6.
>The warning message is like this:
>    mipsel-linux-gcc: main.cpp: C++ compiler not installed on this system
>
>I found that MIPS offers C++ compiler running on MIPS.
>Does MIPS want us to compile C++ on MIPS, not on X86?
>  
>

I recommend that you contact sde@mips.com with questions about SDE. The
linux-mips community probably isn't very interested in these issues ;-(

As to your question: the SDE cross-compiler is intended only for
cross-compiling kernels, and not applications, so we don't currently
build the C++ compiler for x86 (until Linus does a rewrite in C++, I
suppose). So yes, the current expectation is that you would compile
applications, including C++, on a MIPS platform.

Nigel

From raiko@niisi.msk.ru Fri Oct  7 13:48:08 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 07 Oct 2005 13:48:24 +0100 (BST)
Received: from t111.niisi.ras.ru ([193.232.173.111]:46251 "EHLO
	t111.niisi.ras.ru") by ftp.linux-mips.org with ESMTP
	id S8133570AbVJGMsI (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Fri, 7 Oct 2005 13:48:08 +0100
Received: from t111.niisi.ras.ru (localhost [127.0.0.1])
	by t111.niisi.ras.ru (8.13.4/8.12.11) with ESMTP id j97Cm62L004920
	for <linux-mips@linux-mips.org>; Fri, 7 Oct 2005 16:48:07 +0400
Received: (from uucp@localhost)
	by t111.niisi.ras.ru (8.13.4/8.13.4/Submit) with UUCP id j97Cm6I9004916
	for linux-mips@linux-mips.org; Fri, 7 Oct 2005 16:48:06 +0400
Received: from [192.168.173.2] (t34 [193.232.173.34])
	by aa19.niisi.msk.ru (8.12.8/8.12.8) with ESMTP id j97Cl03t008378;
	Fri, 7 Oct 2005 16:47:00 +0400
Message-ID: <43466DCB.7070103@niisi.msk.ru>
Date:	Fri, 07 Oct 2005 16:44:59 +0400
From:	"Gleb O. Raiko" <raiko@niisi.msk.ru>
Organization: NIISI RAN
User-Agent: Mozilla Thunderbird 1.0.7 (Windows/20050923)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	"Gleb O. Raiko" <raiko@niisi.msk.ru>
CC:	linux-mips@linux-mips.org
Subject: Re: Bug in the syscall tracing code
References: <43455D2D.1010901@niisi.msk.ru>
In-Reply-To: <43455D2D.1010901@niisi.msk.ru>
Content-Type: text/plain; charset=KOI8-R; format=flowed
Content-Transfer-Encoding: 7bit
Return-Path: <raiko@niisi.msk.ru>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9180
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: raiko@niisi.msk.ru
Precedence: bulk
X-list: linux-mips

Hello,

> 4. I know there should be yet another way.

The way is to load a saved register in the delay slot of jalr. The saved 
register shall not be s0, of course, because it's saved by the first 
instruction in save_static_function. So the proposed patch is

arch/mips/kernel/scall32-o32.S:

syscall_trace_entry:
         SAVE_STATIC
-	move	s0, t2
+	move	s1, t2
         move    a0, sp
         li      a1, 0
         jal     do_syscall_trace

         lw      a0, PT_R4(sp)           # Restore argument registers
         lw      a1, PT_R5(sp)
         lw      a2, PT_R6(sp)
         lw      a3, PT_R7(sp)
-        jalr	s0
+	.set push
+	.set noreorder
+	jalr	s1
+	 lw	s1, PT_R17(sp)
+	.set pop

The rest of ABIs shall be implemented in the same way.

Regards,
Gleb.

From anemo@mba.ocn.ne.jp Fri Oct  7 14:57:03 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 07 Oct 2005 14:57:22 +0100 (BST)
Received: from mba.ocn.ne.jp ([210.190.142.172]:28125 "EHLO smtp.mba.ocn.ne.jp")
	by ftp.linux-mips.org with ESMTP id S8133576AbVJGN5D (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Fri, 7 Oct 2005 14:57:03 +0100
Received: from localhost (p8236-ipad203funabasi.chiba.ocn.ne.jp [222.146.87.236])
	by smtp.mba.ocn.ne.jp (Postfix) with ESMTP id C162620E1;
	Fri,  7 Oct 2005 22:56:59 +0900 (JST)
Date:	Fri, 07 Oct 2005 22:55:44 +0900 (JST)
Message-Id: <20051007.225544.41197582.anemo@mba.ocn.ne.jp>
To:	sjhill@realitydiluted.com
Cc:	john.cooper@timesys.com, ralf@linux-mips.org,
	greg.weeks@timesys.com, linux-mips@linux-mips.org
Subject: Re: PREEMPT
From:	Atsushi Nemoto <anemo@mba.ocn.ne.jp>
In-Reply-To: <E1ENakd-0005up-Pl@real.realitydiluted.com>
References: <43457563.60505@timesys.com>
	<E1ENakd-0005up-Pl@real.realitydiluted.com>
X-Fingerprint: 6ACA 1623 39BD 9A94 9B1A  B746 CA77 FE94 2874 D52F
X-Pgp-Public-Key: http://wwwkeys.pgp.net/pks/lookup?op=get&search=0x2874D52F
X-Mailer: Mew version 3.3 on Emacs 21.4 / Mule 5.0 (SAKAKI)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Return-Path: <anemo@mba.ocn.ne.jp>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9181
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: anemo@mba.ocn.ne.jp
Precedence: bulk
X-list: linux-mips

>>>>> On Thu, 6 Oct 2005 13:45:55 -0500 (CDT), sjhill@realitydiluted.com said:

sjhill> Um, did no one have a look at Atsushi Nemoto's patch earlier
sjhill> today that addressed pre-emption and CPU1, or am I missing
sjhill> something?

The patch I posted yesterday affects just for ptrace.  I suppose this
is not irrelevant.

Also, though it might irrelevant too, I think there are still possible
bug related signal and fpu_context.  I'll post a patch again.

---
Atsushi Nemoto

From anemo@mba.ocn.ne.jp Fri Oct  7 15:53:10 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 07 Oct 2005 15:53:33 +0100 (BST)
Received: from mba.ocn.ne.jp ([210.190.142.172]:34263 "EHLO smtp.mba.ocn.ne.jp")
	by ftp.linux-mips.org with ESMTP id S8133576AbVJGOxK (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Fri, 7 Oct 2005 15:53:10 +0100
Received: from localhost (p8236-ipad203funabasi.chiba.ocn.ne.jp [222.146.87.236])
	by smtp.mba.ocn.ne.jp (Postfix) with ESMTP id A37B37BA5;
	Fri,  7 Oct 2005 23:53:07 +0900 (JST)
Date:	Fri, 07 Oct 2005 23:51:52 +0900 (JST)
Message-Id: <20051007.235152.75184664.anemo@mba.ocn.ne.jp>
To:	linux-mips@linux-mips.org
Cc:	ralf@linux-mips.org
Subject: [PATCH] fix possible sleeping in atomic on setup/restore sigcontext
From:	Atsushi Nemoto <anemo@mba.ocn.ne.jp>
X-Fingerprint: 6ACA 1623 39BD 9A94 9B1A  B746 CA77 FE94 2874 D52F
X-Pgp-Public-Key: http://wwwkeys.pgp.net/pks/lookup?op=get&search=0x2874D52F
X-Mailer: Mew version 3.3 on Emacs 21.4 / Mule 5.0 (SAKAKI)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Return-Path: <anemo@mba.ocn.ne.jp>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9182
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: anemo@mba.ocn.ne.jp
Precedence: bulk
X-list: linux-mips

The setup_sigcontect/restore_sigcontext might sleep on
put_user/get_user with preemption disabled (i.e. atomic context).
Sleeping in atomic context is not allowed.  This patch fixes this
problem using temporary variable (struct sigcontext tmpsc).

Another possible fix might be rewriting
restore_fp_context/save_fp_context to copy to/from current
thread_struct and use them with restore_fp/save_fp.

Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>

diff --git a/arch/mips/kernel/signal-common.h b/arch/mips/kernel/signal-common.h
--- a/arch/mips/kernel/signal-common.h
+++ b/arch/mips/kernel/signal-common.h
@@ -14,6 +14,7 @@ static inline int
 setup_sigcontext(struct pt_regs *regs, struct sigcontext *sc)
 {
 	int err = 0;
+	struct sigcontext tmpsc;
 
 	err |= __put_user(regs->cp0_epc, &sc->sc_pc);
 
@@ -73,10 +74,15 @@ setup_sigcontext(struct pt_regs *regs, s
 		own_fpu();
 		restore_fp(current);
 	}
-	err |= save_fp_context(sc);
+	/* make sure save_fp_context not sleep */
+	err |= save_fp_context(&tmpsc);
 
 	preempt_enable();
 
+	err |= __copy_to_user(&sc->sc_fpregs, &tmpsc.sc_fpregs,
+			      sizeof(tmpsc.sc_fpregs));
+	err |= __put_user(tmpsc.sc_fpc_csr, &sc->sc_fpc_csr);
+
 out:
 	return err;
 }
@@ -138,14 +144,18 @@ restore_sigcontext(struct pt_regs *regs,
 	err |= __get_user(used_math, &sc->sc_used_math);
 	conditional_used_math(used_math);
 
-	preempt_disable();
-
 	if (used_math()) {
+		/* make sure restore_fp_context not sleep */
+		struct sigcontext tmpsc;
+		err |= __copy_from_user(&tmpsc.sc_fpregs, &sc->sc_fpregs, sizeof(tmpsc.sc_fpregs));
+		err |= __get_user(tmpsc.sc_fpc_csr, &sc->sc_fpc_csr);
+		preempt_disable();
 		/* restore fpu context if we have used it before */
 		own_fpu();
-		err |= restore_fp_context(sc);
+		err |= restore_fp_context(&tmpsc);
 	} else {
 		/* signal handler may have used FPU.  Give it up. */
+		preempt_disable();
 		lose_fpu();
 	}
 
diff --git a/arch/mips/kernel/signal32.c b/arch/mips/kernel/signal32.c
--- a/arch/mips/kernel/signal32.c
+++ b/arch/mips/kernel/signal32.c
@@ -376,14 +376,18 @@ static int restore_sigcontext32(struct p
 	err |= __get_user(used_math, &sc->sc_used_math);
 	conditional_used_math(used_math);
 
-	preempt_disable();
-
 	if (used_math()) {
+		struct sigcontext32 tmpsc;
+		/* make sure restore_fp_context32 not sleep */
+		err |= __copy_from_user(&tmpsc.sc_fpregs, &sc->sc_fpregs, sizeof(tmpsc.sc_fpregs));
+		err |= __get_user(tmpsc.sc_fpc_csr, &sc->sc_fpc_csr);
+		preempt_disable();
 		/* restore fpu context if we have used it before */
 		own_fpu();
-		err |= restore_fp_context32(sc);
+		err |= restore_fp_context32(&tmpsc);
 	} else {
 		/* signal handler may have used FPU.  Give it up. */
+		preempt_disable();
 		lose_fpu();
 	}
 
@@ -569,6 +573,7 @@ static inline int setup_sigcontext32(str
 				     struct sigcontext32 *sc)
 {
 	int err = 0;
+	struct sigcontext32 tmpsc;
 
 	err |= __put_user(regs->cp0_epc, &sc->sc_pc);
 	err |= __put_user(regs->cp0_status, &sc->sc_status);
@@ -614,10 +619,15 @@ static inline int setup_sigcontext32(str
 		own_fpu();
 		restore_fp(current);
 	}
-	err |= save_fp_context32(sc);
+	/* make sure save_fp_context32 not sleep */
+	err |= save_fp_context32(&tmpsc);
 
 	preempt_enable();
 
+	err |= __copy_to_user(&sc->sc_fpregs, &tmpsc.sc_fpregs,
+			      sizeof(tmpsc.sc_fpregs));
+	err |= __put_user(tmpsc.sc_fpc_csr, &sc->sc_fpc_csr);
+
 out:
 	return err;
 }

From ddaney@avtrex.com Fri Oct  7 16:26:11 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 07 Oct 2005 16:26:33 +0100 (BST)
Received: from adsl-67-116-42-147.dsl.sntc01.pacbell.net ([67.116.42.147]:21515
	"EHLO avtrex.com") by ftp.linux-mips.org with ESMTP
	id S8133556AbVJGP0L (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Fri, 7 Oct 2005 16:26:11 +0100
Received: from [192.168.7.26] ([192.168.7.3]) by avtrex.com with Microsoft SMTPSVC(6.0.3790.1830);
	 Fri, 7 Oct 2005 08:26:09 -0700
Message-ID: <43469391.3050307@avtrex.com>
Date:	Fri, 07 Oct 2005 08:26:09 -0700
From:	David Daney <ddaney@avtrex.com>
User-Agent: Mozilla Thunderbird 1.0.7-1.1.fc3 (X11/20050929)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	"Gleb O. Raiko" <raiko@niisi.msk.ru>
CC:	linux-mips@linux-mips.org
Subject: Re: Bug in the syscall tracing code
References: <43455D2D.1010901@niisi.msk.ru> <20051006205308.GB31717@hattusa.textio> <43459374.5080802@avtrex.com> <434628D3.9050307@niisi.msk.ru>
In-Reply-To: <434628D3.9050307@niisi.msk.ru>
Content-Type: text/plain; charset=KOI8-R; format=flowed
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 07 Oct 2005 15:26:09.0505 (UTC) FILETIME=[71644D10:01C5CB53]
Return-Path: <ddaney@avtrex.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9183
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ddaney@avtrex.com
Precedence: bulk
X-list: linux-mips

Gleb O. Raiko wrote:
> David Daney wrote:
> 
>> That is the conclusion I came to in:
>>
>> http://www.linux-mips.org/cgi-bin/mesg.cgi?a=linux-mips&i=4207C3E0.7070405%40avtrex.com 
> 
> 
> 
> Saving in the PT_SCRATCH area (pad0 in C) was a solution for 2.4. 
> Unfortunately, syscall arguments are stored there (and that's why pad0 
> exists in pt_regs after all). So, using PT_SCRATCH as a temporary 
> storage for t2 will break tracing syscalls with more than 4 args for o32 
> ABI.

I know.  I meant for you to look at the very end of the message (The 
part where I said to store it in the slots for k0 or k1).

David Daney.

From unixe@comcast.net Fri Oct  7 16:34:21 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 07 Oct 2005 16:34:42 +0100 (BST)
Received: from sccrmhc13.comcast.net ([63.240.76.28]:16815 "EHLO
	sccrmhc13.comcast.net") by ftp.linux-mips.org with ESMTP
	id S8133556AbVJGPeO convert rfc822-to-8bit (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Fri, 7 Oct 2005 16:34:14 +0100
Received: from buzz (c-67-171-115-157.hsd1.ut.comcast.net[67.171.115.157])
          by comcast.net (sccrmhc13) with SMTP
          id <2005100715340701300bies9e>; Fri, 7 Oct 2005 15:34:07 +0000
From:	"Kyle Unice" <unixe@comcast.net>
To:	<linux-mips@linux-mips.org>
Subject: Cygwin Cross-compile of linux release
Date:	Fri, 7 Oct 2005 09:34:05 -0600
Message-ID: <001901c5cb54$8dfc70f0$0400a8c0@buzz>
MIME-Version: 1.0
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: 8BIT
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook, Build 10.0.6626
Importance: Normal
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180
Return-Path: <unixe@comcast.net>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9184
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: unixe@comcast.net
Precedence: bulk
X-list: linux-mips

I checked out the source for mips linux and tried cross-compiling this on
cygwin.  
This is the result:
  HOSTCC  scripts/mod/modpost.o
  HOSTCC  scripts/mod/sumversion.o
scripts/mod/sumversion.c: In function `md4_final_ascii':
scripts/mod/sumversion.c:221: warning: unsigned int format, long unsigned
int ar
g (arg 4)
scripts/mod/sumversion.c:221: warning: unsigned int format, long unsigned
int ar
g (arg 5)
scripts/mod/sumversion.c:221: warning: unsigned int format, long unsigned
int ar
g (arg 6)
scripts/mod/sumversion.c:221: warning: unsigned int format, long unsigned
int ar
g (arg 7)
  HOSTLD  scripts/mod/modpost
  HOSTCC  scripts/kallsyms
scripts/kallsyms.c: In function `compress_symbols':
scripts/kallsyms.c:366: warning: implicit declaration of function `memmem'
scripts/kallsyms.c:366: warning: assignment makes pointer from integer
without a
 cast
scripts/kallsyms.c:385: warning: assignment makes pointer from integer
without a
 cast
/cygdrive/c/DOCUME~1/KYLE~1.BUZ/LOCALS~1/Temp/ccLMGC3l.o:kallsyms.c:(.text+0
x6cb
): undefined reference to `_memmem'
/cygdrive/c/DOCUME~1/KYLE~1.BUZ/LOCALS~1/Temp/ccLMGC3l.o:kallsyms.c:(.text+0
x72d
): undefined reference to `_memmem'
collect2: ld returned 1 exit status
make[1]: *** [scripts/kallsyms] Error 1
make: *** [scripts] Error 2

Kyle@buzz /usr/src/linux
$


From ralf@linux-mips.org Fri Oct  7 16:44:08 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 07 Oct 2005 16:44:25 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:37391 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133556AbVJGPoI (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Fri, 7 Oct 2005 16:44:08 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j97Fi0nW023829;
	Fri, 7 Oct 2005 16:44:01 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j97Fi0MM023828;
	Fri, 7 Oct 2005 16:44:00 +0100
Date:	Fri, 7 Oct 2005 16:44:00 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	Kyle Unice <unixe@comcast.net>
Cc:	linux-mips@linux-mips.org
Subject: Re: Cygwin Cross-compile of linux release
Message-ID: <20051007154400.GF2616@linux-mips.org>
References: <001901c5cb54$8dfc70f0$0400a8c0@buzz>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <001901c5cb54$8dfc70f0$0400a8c0@buzz>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9185
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Fri, Oct 07, 2005 at 09:34:05AM -0600, Kyle Unice wrote:

> I checked out the source for mips linux and tried cross-compiling this on
> cygwin.  
> This is the result:
>   HOSTCC  scripts/mod/modpost.o
>   HOSTCC  scripts/mod/sumversion.o
> scripts/mod/sumversion.c: In function `md4_final_ascii':
> scripts/mod/sumversion.c:221: warning: unsigned int format, long unsigned
> int ar
> g (arg 4)
> scripts/mod/sumversion.c:221: warning: unsigned int format, long unsigned
> int ar
> g (arg 5)
> scripts/mod/sumversion.c:221: warning: unsigned int format, long unsigned
> int ar
> g (arg 6)
> scripts/mod/sumversion.c:221: warning: unsigned int format, long unsigned
> int ar
> g (arg 7)
>   HOSTLD  scripts/mod/modpost
>   HOSTCC  scripts/kallsyms
> scripts/kallsyms.c: In function `compress_symbols':
> scripts/kallsyms.c:366: warning: implicit declaration of function `memmem'
> scripts/kallsyms.c:366: warning: assignment makes pointer from integer
> without a
>  cast
> scripts/kallsyms.c:385: warning: assignment makes pointer from integer
> without a
>  cast
> /cygdrive/c/DOCUME~1/KYLE~1.BUZ/LOCALS~1/Temp/ccLMGC3l.o:kallsyms.c:(.text+0
> x6cb
> ): undefined reference to `_memmem'
> /cygdrive/c/DOCUME~1/KYLE~1.BUZ/LOCALS~1/Temp/ccLMGC3l.o:kallsyms.c:(.text+0
> x72d
> ): undefined reference to `_memmem'

_memmem must be some symbol of the Cygwin libraries.

Honestly, get rid of Cygwin.  You'll be glad you did, the birds will
fly, the butterflies will be singing ...

  Ralf

From macro@linux-mips.org Fri Oct  7 16:48:11 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 07 Oct 2005 16:48:27 +0100 (BST)
Received: from pollux.ds.pg.gda.pl ([153.19.208.7]:21519 "EHLO
	pollux.ds.pg.gda.pl") by ftp.linux-mips.org with ESMTP
	id S8133557AbVJGPsL (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Fri, 7 Oct 2005 16:48:11 +0100
Received: from localhost (localhost [127.0.0.1])
	by pollux.ds.pg.gda.pl (Postfix) with ESMTP
	id 4CC65F5996; Fri,  7 Oct 2005 17:48:05 +0200 (CEST)
Received: from pollux.ds.pg.gda.pl ([127.0.0.1])
 by localhost (pollux [127.0.0.1]) (amavisd-new, port 10024) with ESMTP
 id 14302-03; Fri,  7 Oct 2005 17:48:05 +0200 (CEST)
Received: from piorun.ds.pg.gda.pl (piorun.ds.pg.gda.pl [153.19.208.8])
	by pollux.ds.pg.gda.pl (Postfix) with ESMTP
	id 0B158E1C9B; Fri,  7 Oct 2005 17:48:05 +0200 (CEST)
Received: from blysk.ds.pg.gda.pl (macro@blysk.ds.pg.gda.pl [153.19.208.6])
	by piorun.ds.pg.gda.pl (8.13.3/8.13.1) with ESMTP id j97Fm8XV017429;
	Fri, 7 Oct 2005 17:48:09 +0200
Date:	Fri, 7 Oct 2005 16:48:17 +0100 (BST)
From:	"Maciej W. Rozycki" <macro@linux-mips.org>
To:	Ralf Baechle <ralf@linux-mips.org>
Cc:	linux-mips@linux-mips.org
Subject: Re: Cygwin Cross-compile of linux release
In-Reply-To: <20051007154400.GF2616@linux-mips.org>
Message-ID: <Pine.LNX.4.61L.0510071647570.11243@blysk.ds.pg.gda.pl>
References: <001901c5cb54$8dfc70f0$0400a8c0@buzz> <20051007154400.GF2616@linux-mips.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
X-Virus-Scanned: ClamAV 0.87/1120/Fri Oct  7 13:06:49 2005 on piorun.ds.pg.gda.pl
X-Virus-Status:	Clean
X-Virus-Scanned: by amavisd-new at pollux.ds.pg.gda.pl
Return-Path: <macro@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9186
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: macro@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Fri, 7 Oct 2005, Ralf Baechle wrote:

> Honestly, get rid of Cygwin.  You'll be glad you did, the birds will
> fly, the butterflies will be singing ...

 And most importantly pigs will do neither!

  Maciej

From jsun@junsun.net Fri Oct  7 17:35:24 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 07 Oct 2005 17:35:41 +0100 (BST)
Received: from [66.29.16.26] ([66.29.16.26]:42514 "EHLO junsun.net")
	by ftp.linux-mips.org with ESMTP id S8133562AbVJGQfY (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Fri, 7 Oct 2005 17:35:24 +0100
Received: from gw.junsun.net (adsl-69-226-216-78.dsl.pltn13.pacbell.net [69.226.216.78])
	by junsun.net (8.13.1/8.13.1) with ESMTP id j97GQJnG026114
	for <linux-mips@linux-mips.org>; Fri, 7 Oct 2005 09:26:20 -0700
Received: from gw.junsun.net (gw.junsun.net [127.0.0.1])
	by gw.junsun.net (8.13.1/8.13.1) with ESMTP id j97GZFvm011742
	for <linux-mips@linux-mips.org>; Fri, 7 Oct 2005 09:35:15 -0700
Received: (from jsun@localhost)
	by gw.junsun.net (8.13.1/8.13.1/Submit) id j97GZEsK011739
	for linux-mips@linux-mips.org; Fri, 7 Oct 2005 09:35:14 -0700
Date:	Fri, 7 Oct 2005 09:35:14 -0700
From:	Jun Sun <jsun@junsun.net>
To:	linux-mips@linux-mips.org
Subject: open source embedded software competition
Message-ID: <20051007163514.GA11686@gw.junsun.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
User-Agent: Mutt/1.4.1i
Return-Path: <jsun@junsun.net>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9187
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: jsun@junsun.net
Precedence: bulk
X-list: linux-mips


Sorry for the spamming here, I thought someone might be interested in
$20K reward. :)

http://iosesc.openfoundry.org/

Everybody can participate.  However, people using MIPS will get extra
bonus scores. :)

Jun

From mward@pioneer-pra.com Fri Oct  7 19:13:17 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 07 Oct 2005 19:13:40 +0100 (BST)
Received: from ns1.pioneer-pra.com ([65.205.244.70]:19409 "EHLO
	mail1.dmz.sj.pioneer-pra.com") by ftp.linux-mips.org with ESMTP
	id S8133575AbVJGSNR (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Fri, 7 Oct 2005 19:13:17 +0100
Received: from localhost (localhost [127.0.0.1])
	by mail1.dmz.sj.pioneer-pra.com (Postfix) with ESMTP id B35DB39002D;
	Fri,  7 Oct 2005 11:13:10 -0700 (PDT)
Received: from mail1.dmz.sj.pioneer-pra.com ([127.0.0.1])
 by localhost (neo1 [127.0.0.1]) (amavisd-new, port 10024) with ESMTP
 id 26197-07; Fri,  7 Oct 2005 11:13:09 -0700 (PDT)
Received: from eo (unknown [65.244.224.162])
	(using TLSv1 with cipher RC4-MD5 (128/128 bits))
	(Client did not present a certificate)
	by mail1.dmz.sj.pioneer-pra.com (Postfix) with ESMTP id 2F5D0390028;
	Fri,  7 Oct 2005 11:13:09 -0700 (PDT)
From:	"Mike C. Ward" <mward@pioneer-pra.com>
To:	"'David Daney'" <ddaney@avtrex.com>, <linux-mips@linux-mips.org>
Subject: RE: Where is op_model_mipsxx.c ?
Date:	Fri, 7 Oct 2005 11:13:02 -0700
Message-ID: <020b01c5cb6a$c2251830$5502020a@eo>
MIME-Version: 1.0
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: 7bit
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook, Build 10.0.6626
In-Reply-To: <4343525A.6080605@avtrex.com>
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2527
Importance: Normal
Return-Path: <mward@pioneer-pra.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9188
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: mward@pioneer-pra.com
Precedence: bulk
X-list: linux-mips

I created an op_model file for the r5K core in a MIPS32 kernel.
details are at
http://oss.pioneer-pra.com/oprofile/

I have not had a chance to test it on a real 2.6 kernel yet, it
was back-ported from 2.6.11 into 2.4.25.

Mike

> -----Original Message-----
> From: linux-mips-bounce@linux-mips.org 
> [mailto:linux-mips-bounce@linux-mips.org] On Behalf Of David Daney
> Sent: Tuesday, October 04, 2005 9:11 PM
> To: linux-mips@linux-mips.org
> Subject: Where is op_model_mipsxx.c ?
> 
> 
> I noticed this in the Makefile for the OProfile directory for mips:
> 
> oprofile-$(CONFIG_CPU_MIPS32_R1)                += op_model_mipsxx.o
> 
> The file op_model_mipsxx.c does not seem to exist.  Which 
> implies to me 
> that someone was working on making it work for MIPS32, but 
> didn't quite 
> finish.
> 
> I want to start hacking on OProfile for a MIPS32 based system and 
> thought it might make a nice starting point.
> 
> If the missing file exists would its author mind making it 
> available to me?
> 
> Thanks,
> David Daney
> 
> 


From unixe@comcast.net Fri Oct  7 21:18:34 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 07 Oct 2005 21:18:52 +0100 (BST)
Received: from sccrmhc11.comcast.net ([204.127.202.55]:1209 "EHLO
	sccrmhc11.comcast.net") by ftp.linux-mips.org with ESMTP
	id S8133577AbVJGUSe (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Fri, 7 Oct 2005 21:18:34 +0100
Received: from buzz (c-67-171-115-157.hsd1.ut.comcast.net[67.171.115.157])
          by comcast.net (sccrmhc11) with SMTP
          id <20051007201826011009fu6ue>; Fri, 7 Oct 2005 20:18:26 +0000
From:	"Kyle Unice" <unixe@comcast.net>
To:	<linux-mips@linux-mips.org>
Subject: Cross-compiling Linux problem
Date:	Fri, 7 Oct 2005 14:18:24 -0600
Message-ID: <002b01c5cb7c$45c181e0$0400a8c0@buzz>
MIME-Version: 1.0
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: 7bit
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook, Build 10.0.6626
Importance: Normal
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180
Return-Path: <unixe@comcast.net>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9189
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: unixe@comcast.net
Precedence: bulk
X-list: linux-mips

  LD      arch/mips/au1000/common/built-in.o
  CC      arch/mips/kernel/cpu-probe.o
  CC      arch/mips/kernel/branch.o
  AS      arch/mips/kernel/entry.o
  AS      arch/mips/kernel/genex.o
  CC      arch/mips/kernel/irq.o
  CC      arch/mips/kernel/process.o
  CC      arch/mips/kernel/ptrace.o
  CC      arch/mips/kernel/reset.o
  CC      arch/mips/kernel/semaphore.o
  CC      arch/mips/kernel/setup.o
  CC      arch/mips/kernel/signal.o
  CC      arch/mips/kernel/syscall.o
  CC      arch/mips/kernel/time.o
  CC      arch/mips/kernel/traps.o
  CC      arch/mips/kernel/unaligned.o
  CC      arch/mips/kernel/mips_ksyms.o
  CC      arch/mips/kernel/module.o
  AS      arch/mips/kernel/r4k_fpu.o
  AS      arch/mips/kernel/r4k_switch.o
  AS      arch/mips/kernel/scall32-o32.o
  CC      arch/mips/kernel/proc.o
  LD      arch/mips/kernel/built-in.o
  AS      arch/mips/kernel/head.o
  CC      arch/mips/kernel/init_task.o
  LDS     arch/mips/kernel/vmlinux.lds
  CC      arch/mips/mm/cache.o
  CC      arch/mips/mm/extable.o
  CC      arch/mips/mm/fault.o
  CC      arch/mips/mm/init.o
  CC      arch/mips/mm/pgtable.o
  CC      arch/mips/mm/tlbex.o
arch/mips/mm/tlbex.c:516:5: warning: "CONFIG_64BIT" is not defined
  AS      arch/mips/mm/tlbex-fault.o
  CC      arch/mips/mm/ioremap.o
arch/mips/mm/ioremap.c: In function `__ioremap':
include/asm-mips/mach-au1x00/ioremap.h:15: sorry, unimplemented: inlining
failed
 in call to '__fixup_bigphys_addr': function body not available
arch/mips/mm/ioremap.c:28: sorry, unimplemented: called from here
make[1]: *** [arch/mips/mm/ioremap.o] Error 1
make: *** [arch/mips/mm] Error 2


From fosterb@uoguelph.ca Fri Oct  7 21:41:59 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 07 Oct 2005 21:42:19 +0100 (BST)
Received: from dragonboat.cs.uoguelph.ca ([131.104.96.108]:26042 "EHLO
	dragonboat.cs.uoguelph.ca") by ftp.linux-mips.org with ESMTP
	id S8133582AbVJGUl7 (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Fri, 7 Oct 2005 21:41:59 +0100
Received: from beddie.cis.uoguelph.ca (marvin.cis.uoguelph.ca [131.104.48.131])
	by dragonboat.cs.uoguelph.ca (8.13.1/8.13.1) with ESMTP id j97KfucQ016403;
	Fri, 7 Oct 2005 16:41:56 -0400
Received: from localhost (localhost.localdomain [127.0.0.1])
	by beddie.cis.uoguelph.ca (Postfix) with ESMTP id E1EBF1DF03;
	Fri,  7 Oct 2005 16:41:46 -0400 (EDT)
Received: from beddie.cis.uoguelph.ca ([127.0.0.1])
	by localhost (beddie [127.0.0.1]) (amavisd-new, port 10024)
	with ESMTP id 29786-02; Fri, 7 Oct 2005 16:41:46 -0400 (EDT)
Received: from [131.104.49.198] (unknown [131.104.49.198])
	by beddie.cis.uoguelph.ca (Postfix) with ESMTP id 2C3808A6E;
	Fri,  7 Oct 2005 16:41:46 -0400 (EDT)
Message-ID: <4346DD97.40106@uoguelph.ca>
Date:	Fri, 07 Oct 2005 16:41:59 -0400
From:	Brett Foster <fosterb@uoguelph.ca>
User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	Kyle Unice <unixe@comcast.net>
CC:	linux-mips@linux-mips.org
Subject: Re: Cross-compiling Linux problem
References: <002b01c5cb7c$45c181e0$0400a8c0@buzz>
In-Reply-To: <002b01c5cb7c$45c181e0$0400a8c0@buzz>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: by amavisd-new-20030616-p10 (Debian) at cs-club.org
X-Scanned-By: MIMEDefang 2.52 on 131.104.96.108
Return-Path: <fosterb@uoguelph.ca>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9190
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: fosterb@uoguelph.ca
Precedence: bulk
X-list: linux-mips

Kyle Unice wrote:

>arch/mips/mm/tlbex.c:516:5: warning: "CONFIG_64BIT" is not defined
>  AS      arch/mips/mm/tlbex-fault.o
>  CC      arch/mips/mm/ioremap.o
>arch/mips/mm/ioremap.c: In function `__ioremap':
>include/asm-mips/mach-au1x00/ioremap.h:15: sorry, unimplemented: inlining
>failed
> in call to '__fixup_bigphys_addr': function body not available
>arch/mips/mm/ioremap.c:28: sorry, unimplemented: called from here
>make[1]: *** [arch/mips/mm/ioremap.o] Error 1
>make: *** [arch/mips/mm] Error 2
>  
>
I once had this sort of problem when I forgot to specify the cross 
compiler while invoking make and tried to compile a MIPS kernel on X86 gcc.

Brett

From macro@linux-mips.org Fri Oct  7 21:54:47 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 07 Oct 2005 21:55:06 +0100 (BST)
Received: from pollux.ds.pg.gda.pl ([153.19.208.7]:6161 "EHLO
	pollux.ds.pg.gda.pl") by ftp.linux-mips.org with ESMTP
	id S8133582AbVJGUyr (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Fri, 7 Oct 2005 21:54:47 +0100
Received: from localhost (localhost [127.0.0.1])
	by pollux.ds.pg.gda.pl (Postfix) with ESMTP
	id 57BEBF5996; Fri,  7 Oct 2005 22:54:40 +0200 (CEST)
Received: from pollux.ds.pg.gda.pl ([127.0.0.1])
 by localhost (pollux [127.0.0.1]) (amavisd-new, port 10024) with ESMTP
 id 10178-04; Fri,  7 Oct 2005 22:54:40 +0200 (CEST)
Received: from piorun.ds.pg.gda.pl (piorun.ds.pg.gda.pl [153.19.208.8])
	by pollux.ds.pg.gda.pl (Postfix) with ESMTP
	id 0E642F5969; Fri,  7 Oct 2005 22:54:40 +0200 (CEST)
Received: from blysk.ds.pg.gda.pl (macro@blysk.ds.pg.gda.pl [153.19.208.6])
	by piorun.ds.pg.gda.pl (8.13.3/8.13.1) with ESMTP id j97KsjF5002496;
	Fri, 7 Oct 2005 22:54:45 +0200
Date:	Fri, 7 Oct 2005 21:54:57 +0100 (BST)
From:	"Maciej W. Rozycki" <macro@linux-mips.org>
To:	Brett Foster <fosterb@uoguelph.ca>
Cc:	linux-mips@linux-mips.org
Subject: Re: Cross-compiling Linux problem
In-Reply-To: <4346DD97.40106@uoguelph.ca>
Message-ID: <Pine.LNX.4.61L.0510072154500.11243@blysk.ds.pg.gda.pl>
References: <002b01c5cb7c$45c181e0$0400a8c0@buzz> <4346DD97.40106@uoguelph.ca>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
X-Virus-Scanned: ClamAV 0.87/1121/Fri Oct  7 19:38:02 2005 on piorun.ds.pg.gda.pl
X-Virus-Status:	Clean
X-Virus-Scanned: by amavisd-new at pollux.ds.pg.gda.pl
Return-Path: <macro@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9191
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: macro@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Fri, 7 Oct 2005, Brett Foster wrote:

> > include/asm-mips/mach-au1x00/ioremap.h:15: sorry, unimplemented: inlining
> > failed
> > in call to '__fixup_bigphys_addr': function body not available
> > arch/mips/mm/ioremap.c:28: sorry, unimplemented: called from here
> > make[1]: *** [arch/mips/mm/ioremap.o] Error 1
> > make: *** [arch/mips/mm] Error 2
> > 
> > 
> I once had this sort of problem when I forgot to specify the cross compiler
> while invoking make and tried to compile a MIPS kernel on X86 gcc.

 In this case the header is truly broken -- "extern inline 
__attribute__((always_inline))" is self-contradicting.

  Maciej

From unixe@comcast.net Fri Oct  7 22:26:58 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 07 Oct 2005 22:27:18 +0100 (BST)
Received: from sccrmhc12.comcast.net ([63.240.76.22]:2452 "EHLO
	sccrmhc12.comcast.net") by ftp.linux-mips.org with ESMTP
	id S8133588AbVJGV06 (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Fri, 7 Oct 2005 22:26:58 +0100
Received: from buzz (c-67-171-115-157.hsd1.ut.comcast.net[67.171.115.157])
          by comcast.net (sccrmhc12) with SMTP
          id <2005100721265101200p4g7pe>; Fri, 7 Oct 2005 21:26:51 +0000
From:	"Kyle Unice" <unixe@comcast.net>
To:	"'Brett Foster'" <fosterb@uoguelph.ca>
Cc:	<linux-mips@linux-mips.org>
Subject: RE: Cross-compiling Linux problem
Date:	Fri, 7 Oct 2005 15:26:49 -0600
Message-ID: <002c01c5cb85$d42c5050$0400a8c0@buzz>
MIME-Version: 1.0
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: 7bit
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook, Build 10.0.6626
Importance: Normal
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180
In-Reply-To: <4346DD97.40106@uoguelph.ca>
Return-Path: <unixe@comcast.net>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9192
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: unixe@comcast.net
Precedence: bulk
X-list: linux-mips

I am compiling the db1550_defconfig which does define
CONFIG_64BIT_PHYS_ADDR.
The cross compiler is mipsel generated from crosstool.sh
Kyle

-----Original Message-----
From: Brett Foster [mailto:fosterb@uoguelph.ca] 
Sent: Friday, October 07, 2005 2:42 PM
To: Kyle Unice
Cc: linux-mips@linux-mips.org
Subject: Re: Cross-compiling Linux problem

Kyle Unice wrote:

>arch/mips/mm/tlbex.c:516:5: warning: "CONFIG_64BIT" is not defined
>  AS      arch/mips/mm/tlbex-fault.o
>  CC      arch/mips/mm/ioremap.o
>arch/mips/mm/ioremap.c: In function `__ioremap':
>include/asm-mips/mach-au1x00/ioremap.h:15: sorry, unimplemented: inlining
>failed
> in call to '__fixup_bigphys_addr': function body not available
>arch/mips/mm/ioremap.c:28: sorry, unimplemented: called from here
>make[1]: *** [arch/mips/mm/ioremap.o] Error 1
>make: *** [arch/mips/mm] Error 2
>  
>
I once had this sort of problem when I forgot to specify the cross 
compiler while invoking make and tried to compile a MIPS kernel on X86 gcc.

Brett


From ppopov@embeddedalley.com Fri Oct  7 22:47:41 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 07 Oct 2005 22:48:01 +0100 (BST)
Received: from smtp101.biz.mail.mud.yahoo.com ([68.142.200.236]:46697 "HELO
	smtp101.biz.mail.mud.yahoo.com") by ftp.linux-mips.org with SMTP
	id S8133588AbVJGVrl (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Fri, 7 Oct 2005 22:47:41 +0100
Received: (qmail 90019 invoked from network); 7 Oct 2005 21:47:31 -0000
Received: from unknown (HELO ?192.168.1.110?) (ppopov@embeddedalley.com@71.128.175.242 with plain)
  by smtp101.biz.mail.mud.yahoo.com with SMTP; 7 Oct 2005 21:47:31 -0000
Subject: RE: Cross-compiling Linux problem
From:	Pete Popov <ppopov@embeddedalley.com>
Reply-To: ppopov@embeddedalley.com
To:	Kyle Unice <unixe@comcast.net>
Cc:	'Brett Foster' <fosterb@uoguelph.ca>,
	"'linux-mips@linux-mips.org'" <linux-mips@linux-mips.org>
In-Reply-To: <002c01c5cb85$d42c5050$0400a8c0@buzz>
References: <002c01c5cb85$d42c5050$0400a8c0@buzz>
Content-Type: text/plain
Organization: Embedded Alley Solutions, Inc
Date:	Fri, 07 Oct 2005 14:47:15 -0700
Message-Id: <1128721636.9971.166.camel@localhost.localdomain>
Mime-Version: 1.0
X-Mailer: Evolution 2.0.4 (2.0.4-4) 
Content-Transfer-Encoding: 7bit
Return-Path: <ppopov@embeddedalley.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9193
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ppopov@embeddedalley.com
Precedence: bulk
X-list: linux-mips

On Fri, 2005-10-07 at 15:26 -0600, Kyle Unice wrote:
> I am compiling the db1550_defconfig which does define
> CONFIG_64BIT_PHYS_ADDR.
> The cross compiler is mipsel generated from crosstool.sh

Which gcc version? And I assume you are using the linux-mips.org tree,
not kernel.org?

Pete

> Kyle
> 
> -----Original Message-----
> From: Brett Foster [mailto:fosterb@uoguelph.ca] 
> Sent: Friday, October 07, 2005 2:42 PM
> To: Kyle Unice
> Cc: linux-mips@linux-mips.org
> Subject: Re: Cross-compiling Linux problem
> 
> Kyle Unice wrote:
> 
> >arch/mips/mm/tlbex.c:516:5: warning: "CONFIG_64BIT" is not defined
> >  AS      arch/mips/mm/tlbex-fault.o
> >  CC      arch/mips/mm/ioremap.o
> >arch/mips/mm/ioremap.c: In function `__ioremap':
> >include/asm-mips/mach-au1x00/ioremap.h:15: sorry, unimplemented: inlining
> >failed
> > in call to '__fixup_bigphys_addr': function body not available
> >arch/mips/mm/ioremap.c:28: sorry, unimplemented: called from here
> >make[1]: *** [arch/mips/mm/ioremap.o] Error 1
> >make: *** [arch/mips/mm] Error 2
> >  
> >
> I once had this sort of problem when I forgot to specify the cross 
> compiler while invoking make and tried to compile a MIPS kernel on X86 gcc.
> 
> Brett
> 
> 


From unixe@comcast.net Fri Oct  7 22:54:28 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 07 Oct 2005 22:54:48 +0100 (BST)
Received: from sccrmhc13.comcast.net ([204.127.202.64]:48627 "EHLO
	sccrmhc13.comcast.net") by ftp.linux-mips.org with ESMTP
	id S8133591AbVJGVyQ convert rfc822-to-8bit (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Fri, 7 Oct 2005 22:54:16 +0100
Received: from buzz (c-67-171-115-157.hsd1.ut.comcast.net[67.171.115.157])
          by comcast.net (sccrmhc13) with SMTP
          id <2005100721540901300bc1r8e>; Fri, 7 Oct 2005 21:54:10 +0000
From:	"Kyle Unice" <unixe@comcast.net>
To:	<ppopov@embeddedalley.com>
Cc:	"'Brett Foster'" <fosterb@uoguelph.ca>, <linux-mips@linux-mips.org>
Subject: RE: Cross-compiling Linux problem
Date:	Fri, 7 Oct 2005 15:54:08 -0600
Message-ID: <002d01c5cb89$a4f1b830$0400a8c0@buzz>
MIME-Version: 1.0
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: 8BIT
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook, Build 10.0.6626
Importance: Normal
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180
In-Reply-To: <1128721636.9971.166.camel@localhost.localdomain>
Return-Path: <unixe@comcast.net>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9194
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: unixe@comcast.net
Precedence: bulk
X-list: linux-mips

I am using gcc-3.4.4 and the cvs checkout of linux-mips.org tree.
Kyle

-----Original Message-----
From: Pete Popov [mailto:ppopov@embeddedalley.com] 
Sent: Friday, October 07, 2005 3:47 PM
To: Kyle Unice
Cc: 'Brett Foster'; 'linux-mips@linux-mips.org'
Subject: RE: Cross-compiling Linux problem

On Fri, 2005-10-07 at 15:26 -0600, Kyle Unice wrote:
> I am compiling the db1550_defconfig which does define
> CONFIG_64BIT_PHYS_ADDR.
> The cross compiler is mipsel generated from crosstool.sh

Which gcc version? And I assume you are using the linux-mips.org tree,
not kernel.org?

Pete

> Kyle
> 
> -----Original Message-----
> From: Brett Foster [mailto:fosterb@uoguelph.ca] 
> Sent: Friday, October 07, 2005 2:42 PM
> To: Kyle Unice
> Cc: linux-mips@linux-mips.org
> Subject: Re: Cross-compiling Linux problem
> 
> Kyle Unice wrote:
> 
> >arch/mips/mm/tlbex.c:516:5: warning: "CONFIG_64BIT" is not defined
> >  AS      arch/mips/mm/tlbex-fault.o
> >  CC      arch/mips/mm/ioremap.o
> >arch/mips/mm/ioremap.c: In function `__ioremap':
> >include/asm-mips/mach-au1x00/ioremap.h:15: sorry, unimplemented: inlining
> >failed
> > in call to '__fixup_bigphys_addr': function body not available
> >arch/mips/mm/ioremap.c:28: sorry, unimplemented: called from here
> >make[1]: *** [arch/mips/mm/ioremap.o] Error 1
> >make: *** [arch/mips/mm] Error 2
> >  
> >
> I once had this sort of problem when I forgot to specify the cross 
> compiler while invoking make and tried to compile a MIPS kernel on X86
gcc.
> 
> Brett
> 
> 


From ddaney@avtrex.com Fri Oct  7 23:27:43 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 07 Oct 2005 23:27:59 +0100 (BST)
Received: from adsl-67-116-42-147.dsl.sntc01.pacbell.net ([67.116.42.147]:49677
	"EHLO avtrex.com") by ftp.linux-mips.org with ESMTP
	id S8133589AbVJGW1n (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Fri, 7 Oct 2005 23:27:43 +0100
Received: from [192.168.7.26] ([192.168.7.3]) by avtrex.com with Microsoft SMTPSVC(6.0.3790.1830);
	 Fri, 7 Oct 2005 15:27:40 -0700
Message-ID: <4346F65B.6050800@avtrex.com>
Date:	Fri, 07 Oct 2005 15:27:39 -0700
From:	David Daney <ddaney@avtrex.com>
User-Agent: Mozilla Thunderbird 1.0.7-1.1.fc3 (X11/20050929)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	Kyle Unice <unixe@comcast.net>
CC:	ppopov@embeddedalley.com, 'Brett Foster' <fosterb@uoguelph.ca>,
	linux-mips@linux-mips.org
Subject: Re: Cross-compiling Linux problem
References: <002d01c5cb89$a4f1b830$0400a8c0@buzz>
In-Reply-To: <002d01c5cb89$a4f1b830$0400a8c0@buzz>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 07 Oct 2005 22:27:40.0152 (UTC) FILETIME=[53CAC780:01C5CB8E]
Return-Path: <ddaney@avtrex.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9195
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ddaney@avtrex.com
Precedence: bulk
X-list: linux-mips

Kyle Unice wrote:
> I am using gcc-3.4.4 and the cvs checkout of linux-mips.org tree.
> Kyle

Not withstanding Maciej's comment about the real problem being the 
broken header file, I give you a quote from 
http://www.linux-mips.org/wiki/Git : "At this time only the linux.git 
repository is in production use.... all other archives are only historical."

You might consider getting your code from the git repository as the CVS 
repository is no longer being maintained.

David Daney


From ilya@total-knowledge.com Fri Oct  7 23:56:54 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 07 Oct 2005 23:57:11 +0100 (BST)
Received: from alpha.total-knowledge.com ([205.217.158.170]:10138 "EHLO
	total-knowledge.com") by ftp.linux-mips.org with ESMTP
	id S8133583AbVJGW4y (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Fri, 7 Oct 2005 23:56:54 +0100
Received: (qmail 28499 invoked from network); 7 Oct 2005 15:56:50 -0700
Received: from c-24-6-216-150.hsd1.ca.comcast.net (HELO ?192.168.0.211?) (ilya@24.6.216.150)
  by alpha.total-knowledge.com with ESMTPA; 7 Oct 2005 15:56:50 -0700
Message-ID: <4346FD34.8000100@total-knowledge.com>
Date:	Fri, 07 Oct 2005 15:56:52 -0700
From:	"Ilya A. Volynets-Evenbakh" <ilya@total-knowledge.com>
Organization: Total Knowledge
User-Agent: Mozilla Thunderbird 1.0.6 (X11/20050723)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	David Daney <ddaney@avtrex.com>
CC:	Kyle Unice <unixe@comcast.net>, ppopov@embeddedalley.com,
	'Brett Foster' <fosterb@uoguelph.ca>, linux-mips@linux-mips.org
Subject: Re: Cross-compiling Linux problem
References: <002d01c5cb89$a4f1b830$0400a8c0@buzz> <4346F65B.6050800@avtrex.com>
In-Reply-To: <4346F65B.6050800@avtrex.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Return-Path: <ilya@total-knowledge.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9196
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ilya@total-knowledge.com
Precedence: bulk
X-list: linux-mips

CVS is not where development happens, but it is still updated, according 
to Ralf.

David Daney wrote:

> Kyle Unice wrote:
>
>> I am using gcc-3.4.4 and the cvs checkout of linux-mips.org tree.
>> Kyle
>
>
> Not withstanding Maciej's comment about the real problem being the 
> broken header file, I give you a quote from 
> http://www.linux-mips.org/wiki/Git : "At this time only the linux.git 
> repository is in production use.... all other archives are only 
> historical."
>
> You might consider getting your code from the git repository as the 
> CVS repository is no longer being maintained.
>
> David Daney
>
>

-- 
Ilya A. Volynets-Evenbakh
Total Knowledge. CTO
http://www.total-knowledge.com


From ddaney@avtrex.com Sat Oct  8 00:15:21 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Sat, 08 Oct 2005 00:15:38 +0100 (BST)
Received: from adsl-67-116-42-147.dsl.sntc01.pacbell.net ([67.116.42.147]:1309
	"EHLO avtrex.com") by ftp.linux-mips.org with ESMTP
	id S8133583AbVJGXPV (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Sat, 8 Oct 2005 00:15:21 +0100
Received: from [192.168.7.26] ([192.168.7.3]) by avtrex.com with Microsoft SMTPSVC(6.0.3790.1830);
	 Fri, 7 Oct 2005 16:15:19 -0700
Message-ID: <43470187.3070104@avtrex.com>
Date:	Fri, 07 Oct 2005 16:15:19 -0700
From:	David Daney <ddaney@avtrex.com>
User-Agent: Mozilla Thunderbird 1.0.7-1.1.fc3 (X11/20050929)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	"Ilya A. Volynets-Evenbakh" <ilya@total-knowledge.com>
CC:	linux-mips@linux-mips.org
Subject: Re: Cross-compiling Linux problem
References: <002d01c5cb89$a4f1b830$0400a8c0@buzz> <4346F65B.6050800@avtrex.com> <4346FD34.8000100@total-knowledge.com>
In-Reply-To: <4346FD34.8000100@total-knowledge.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 07 Oct 2005 23:15:19.0694 (UTC) FILETIME=[FC3642E0:01C5CB94]
Return-Path: <ddaney@avtrex.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9197
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ddaney@avtrex.com
Precedence: bulk
X-list: linux-mips

Ilya A. Volynets-Evenbakh wrote:
> CVS is not where development happens, but it is still updated, according 
> to Ralf.
> 

Perhaps, but the reason I mentioned this is that I saw this warning:

arch/mips/mm/tlbex.c:516:5: warning: "CONFIG_64BIT" is not defined

Which is fixed in the git repository, but not CVS

David Daney

> David Daney wrote:
> 
>> Kyle Unice wrote:
>>
>>> I am using gcc-3.4.4 and the cvs checkout of linux-mips.org tree.
>>> Kyle
>>
>>
>>
>> Not withstanding Maciej's comment about the real problem being the 
>> broken header file, I give you a quote from 
>> http://www.linux-mips.org/wiki/Git : "At this time only the linux.git 
>> repository is in production use.... all other archives are only 
>> historical."
>>
>> You might consider getting your code from the git repository as the 
>> CVS repository is no longer being maintained.
>>
>> David Daney
>>
>>
> 


From ddaney@avtrex.com Sat Oct  8 00:59:13 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Sat, 08 Oct 2005 00:59:31 +0100 (BST)
Received: from adsl-67-116-42-147.dsl.sntc01.pacbell.net ([67.116.42.147]:54021
	"EHLO avtrex.com") by ftp.linux-mips.org with ESMTP
	id S8133590AbVJGX7N (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Sat, 8 Oct 2005 00:59:13 +0100
Received: from [192.168.7.26] ([192.168.7.3]) by avtrex.com with Microsoft SMTPSVC(6.0.3790.1830);
	 Fri, 7 Oct 2005 16:59:11 -0700
Message-ID: <43470BCF.1070709@avtrex.com>
Date:	Fri, 07 Oct 2005 16:59:11 -0700
From:	David Daney <ddaney@avtrex.com>
User-Agent: Mozilla Thunderbird 1.0.7-1.1.fc3 (X11/20050929)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	linux-mips@linux-mips.org
Subject: OProfile cannot be loaded as module...
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 07 Oct 2005 23:59:11.0563 (UTC) FILETIME=[1CED99B0:01C5CB9B]
Return-Path: <ddaney@avtrex.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9198
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ddaney@avtrex.com
Precedence: bulk
X-list: linux-mips

arch/mips/oprofile/common.c defines several symbols (op_model_mipsxx and 
op_model_rm9000) with __attribute__((weak)).  It then assumes that ELF 
linking conventions will prevail and there will be no problems if they 
are undefined.

The problem is if you try to load oprofile as a module.  The kernel 
module linker evidentially does not understand weak symbols and refuses 
to load the module because they are undefined.

Perhaps a single

extern struct op_mips_model plat_op_model;

That must be defined by each different implementation.  Deciding one 
which implementation would then be done at compile time instead of runtime.

I don't have a patch for this yet, but that is what I am thinking of doing.

David Daney.

From ddaney@avtrex.com Sat Oct  8 01:25:46 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Sat, 08 Oct 2005 01:26:05 +0100 (BST)
Received: from adsl-67-116-42-147.dsl.sntc01.pacbell.net ([67.116.42.147]:49183
	"EHLO avtrex.com") by ftp.linux-mips.org with ESMTP
	id S8133590AbVJHAZq (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Sat, 8 Oct 2005 01:25:46 +0100
Received: from [192.168.7.26] ([192.168.7.3]) by avtrex.com with Microsoft SMTPSVC(6.0.3790.1830);
	 Fri, 7 Oct 2005 17:25:44 -0700
Message-ID: <43471208.3060405@avtrex.com>
Date:	Fri, 07 Oct 2005 17:25:44 -0700
From:	David Daney <ddaney@avtrex.com>
User-Agent: Mozilla Thunderbird 1.0.7-1.1.fc3 (X11/20050929)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	linux-mips@linux-mips.org
Subject: Re: OProfile cannot be loaded as module...
References: <43470BCF.1070709@avtrex.com>
In-Reply-To: <43470BCF.1070709@avtrex.com>
Content-Type: multipart/mixed;
 boundary="------------030309090201040107050005"
X-OriginalArrivalTime: 08 Oct 2005 00:25:44.0251 (UTC) FILETIME=[D23E80B0:01C5CB9E]
Return-Path: <ddaney@avtrex.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9199
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ddaney@avtrex.com
Precedence: bulk
X-list: linux-mips

This is a multi-part message in MIME format.
--------------030309090201040107050005
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

David Daney wrote:
> arch/mips/oprofile/common.c defines several symbols (op_model_mipsxx and 
> op_model_rm9000) with __attribute__((weak)).  It then assumes that ELF 
> linking conventions will prevail and there will be no problems if they 
> are undefined.
> 
> The problem is if you try to load oprofile as a module.  The kernel 
> module linker evidentially does not understand weak symbols and refuses 
> to load the module because they are undefined.
> 
> Perhaps a single
> 
> extern struct op_mips_model plat_op_model;
> 
> That must be defined by each different implementation.  Deciding one 
> which implementation would then be done at compile time instead of runtime.
> 
> I don't have a patch for this yet, but that is what I am thinking of doing.
> 

Ok, attached is my untested (but it compiles for some architectures) patch.

David Daney

--------------030309090201040107050005
Content-Type: text/plain;
 name="op.d"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="op.d"

diff --git a/arch/mips/oprofile/common.c b/arch/mips/oprofile/common.c
--- a/arch/mips/oprofile/common.c
+++ b/arch/mips/oprofile/common.c
@@ -14,20 +14,17 @@
 
 #include "op_impl.h"
 
-extern struct op_mips_model op_model_mipsxx __attribute__((weak));
-extern struct op_mips_model op_model_rm9000 __attribute__((weak));
-
-static struct op_mips_model *model;
+extern struct op_mips_model *plat_op_model;
 
 static struct op_counter_config ctr[20];
 
 static int op_mips_setup(void)
 {
 	/* Pre-compute the values to stuff in the hardware registers.  */
-	model->reg_setup(ctr);
+	plat_op_model->reg_setup(ctr);
 
 	/* Configure the registers on all cpus.  */
-	on_each_cpu(model->cpu_setup, 0, 0, 1);
+	on_each_cpu(plat_op_model->cpu_setup, 0, 0, 1);
 
         return 0;
 }
@@ -36,7 +33,7 @@ static int op_mips_create_files(struct s
 {
 	int i;
 
-	for (i = 0; i < model->num_counters; ++i) {
+	for (i = 0; i < plat_op_model->num_counters; ++i) {
 		struct dentry *dir;
 		char buf[3];
 
@@ -58,7 +55,7 @@ static int op_mips_create_files(struct s
 
 static int op_mips_start(void)
 {
-	on_each_cpu(model->cpu_start, NULL, 0, 1);
+	on_each_cpu(plat_op_model->cpu_start, NULL, 0, 1);
 
 	return 0;
 }
@@ -66,49 +63,33 @@ static int op_mips_start(void)
 static void op_mips_stop(void)
 {
 	/* Disable performance monitoring for all counters.  */
-	on_each_cpu(model->cpu_stop, NULL, 0, 1);
+	on_each_cpu(plat_op_model->cpu_stop, NULL, 0, 1);
 }
 
 int __init oprofile_arch_init(struct oprofile_operations *ops)
 {
-	struct op_mips_model *lmodel = NULL;
 	int res;
 
 	printk(KERN_INFO "oprofile: In oprofile_arch_init.\n");
 
-	switch (current_cpu_data.cputype) {
-	case CPU_24K:
-		lmodel = &op_model_mipsxx;
-		break;
-
-	case CPU_RM9000:
-		lmodel = &op_model_rm9000;
-		break;
-	};
-
-	if (!lmodel)
-		return -ENODEV;
-
-	res = lmodel->init();
+	res = plat_op_model->init();
 	if (res)
 		return res;
 
-	model = lmodel;
-
 	ops->create_files	= op_mips_create_files;
 	ops->setup		= op_mips_setup;
 	//ops->shutdown         = op_mips_shutdown;
 	ops->start		= op_mips_start;
 	ops->stop		= op_mips_stop;
-	ops->cpu_type		= lmodel->cpu_type;
+	ops->cpu_type		= plat_op_model->cpu_type;
 
 	printk(KERN_INFO "oprofile: using %s performance monitoring.\n",
-	       lmodel->cpu_type);
+	       plat_op_model->cpu_type);
 
 	return 0;
 }
 
 void oprofile_arch_exit(void)
 {
-	model->exit();
+	plat_op_model->exit();
 }
diff --git a/arch/mips/oprofile/op_model_mipsxx.c b/arch/mips/oprofile/op_model_mipsxx.c
--- a/arch/mips/oprofile/op_model_mipsxx.c
+++ b/arch/mips/oprofile/op_model_mipsxx.c
@@ -23,7 +23,7 @@
 
 #define M_COUNTER_OVERFLOW		(1UL    << 31)
 
-struct op_mips_model op_model_mipsxx;
+static struct op_mips_model op_model_mipsxx;
 
 static struct mipsxx_register_config {
 	unsigned int control[4];
@@ -205,7 +205,7 @@ static void mipsxx_exit(void)
 	perf_irq = null_perf_irq;
 }
 
-struct op_mips_model op_model_mipsxx = {
+static struct op_mips_model op_model_mipsxx = {
 	.reg_setup	= mipsxx_reg_setup,
 	.cpu_setup	= mipsxx_cpu_setup,
 	.init		= mipsxx_init,
@@ -213,3 +213,5 @@ struct op_mips_model op_model_mipsxx = {
 	.cpu_start	= mipsxx_cpu_start,
 	.cpu_stop	= mipsxx_cpu_stop,
 };
+
+struct op_mips_model *plat_op_model = &op_model_mipsxx;
diff --git a/arch/mips/oprofile/op_model_rm9000.c b/arch/mips/oprofile/op_model_rm9000.c
--- a/arch/mips/oprofile/op_model_rm9000.c
+++ b/arch/mips/oprofile/op_model_rm9000.c
@@ -126,7 +126,7 @@ static void rm9000_exit(void)
 	free_irq(rm9000_perfcount_irq, NULL);
 }
 
-struct op_mips_model op_model_rm9000 = {
+static struct op_mips_model op_model_rm9000 = {
 	.reg_setup	= rm9000_reg_setup,
 	.cpu_setup	= rm9000_cpu_setup,
 	.init		= rm9000_init,
@@ -136,3 +136,5 @@ struct op_mips_model op_model_rm9000 = {
 	.cpu_type	= "mips/rm9000",
 	.num_counters	= 2
 };
+
+struct op_mips_model *plat_op_model = &op_model_rm9000;

--------------030309090201040107050005--

From unixe@comcast.net Sat Oct  8 04:33:37 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Sat, 08 Oct 2005 04:33:55 +0100 (BST)
Received: from sccrmhc14.comcast.net ([63.240.76.49]:12163 "EHLO
	sccrmhc14.comcast.net") by ftp.linux-mips.org with ESMTP
	id S8133433AbVJHDdh convert rfc822-to-8bit (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Sat, 8 Oct 2005 04:33:37 +0100
Received: from buzz (c-67-171-115-157.hsd1.ut.comcast.net[67.171.115.157])
          by comcast.net (sccrmhc14) with SMTP
          id <2005100803332901400ol4mle>; Sat, 8 Oct 2005 03:33:30 +0000
From:	"Kyle Unice" <unixe@comcast.net>
To:	"'David Daney'" <ddaney@avtrex.com>
Cc:	<ppopov@embeddedalley.com>, "'Brett Foster'" <fosterb@uoguelph.ca>,
	<linux-mips@linux-mips.org>
Subject: RE: Cross-compiling Linux problem
Date:	Fri, 7 Oct 2005 21:33:27 -0600
Message-ID: <003701c5cbb9$0c4a9590$0400a8c0@buzz>
MIME-Version: 1.0
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: 8BIT
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook, Build 10.0.6626
Importance: Normal
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180
In-Reply-To: <4346F65B.6050800@avtrex.com>
Return-Path: <unixe@comcast.net>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9200
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: unixe@comcast.net
Precedence: bulk
X-list: linux-mips

David,
Thanks I downloaded and installed git.  Used git to get the linux source 
And did a build and got:

  CC      arch/mips/au1000/common/prom.o
  AS      arch/mips/au1000/common/int-handler.o
  CC      arch/mips/au1000/common/irq.o
  CC      arch/mips/au1000/common/puts.o
  CC      arch/mips/au1000/common/time.o
  CC      arch/mips/au1000/common/reset.o
  CC      arch/mips/au1000/common/au1xxx_irqmap.o
  CC      arch/mips/au1000/common/clocks.o
  CC      arch/mips/au1000/common/platform.o
  CC      arch/mips/au1000/common/power.o
  CC      arch/mips/au1000/common/setup.o
  AS      arch/mips/au1000/common/sleeper.o
  CC      arch/mips/au1000/common/cputable.o
  CC      arch/mips/au1000/common/dma.o
  CC      arch/mips/au1000/common/dbdma.o
  CC      arch/mips/au1000/common/gpio.o
  CC      arch/mips/au1000/common/pci.o
arch/mips/au1000/common/pci.c: In function `au1x_pci_setup':
include/asm-mips/mach-au1x00/ioremap.h:15: sorry, unimplemented: inlining
failed
 in call to '__fixup_bigphys_addr': function body not available
arch/mips/au1000/common/pci.c:28: sorry, unimplemented: called from here
make[1]: *** [arch/mips/au1000/common/pci.o] Error 1
make: *** [arch/mips/au1000/common] Error 2

Kyle

-----Original Message-----
From: David Daney [mailto:ddaney@avtrex.com] 
Sent: Friday, October 07, 2005 4:28 PM
To: Kyle Unice
Cc: ppopov@embeddedalley.com; 'Brett Foster'; linux-mips@linux-mips.org
Subject: Re: Cross-compiling Linux problem

Kyle Unice wrote:
> I am using gcc-3.4.4 and the cvs checkout of linux-mips.org tree.
> Kyle

Not withstanding Maciej's comment about the real problem being the 
broken header file, I give you a quote from 
http://www.linux-mips.org/wiki/Git : "At this time only the linux.git 
repository is in production use.... all other archives are only historical."

You might consider getting your code from the git repository as the CVS 
repository is no longer being maintained.

David Daney


From unixe@comcast.net Sat Oct  8 14:52:35 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Sat, 08 Oct 2005 14:52:51 +0100 (BST)
Received: from sccrmhc14.comcast.net ([63.240.76.49]:64486 "EHLO
	sccrmhc14.comcast.net") by ftp.linux-mips.org with ESMTP
	id S8133616AbVJHNwf (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Sat, 8 Oct 2005 14:52:35 +0100
Received: from buzz (c-67-171-115-157.hsd1.ut.comcast.net[67.171.115.157])
          by comcast.net (sccrmhc14) with SMTP
          id <2005100813522701400ok6bde>; Sat, 8 Oct 2005 13:52:27 +0000
From:	"Kyle Unice" <unixe@comcast.net>
To:	"'Ilya A. Volynets-Evenbakh'" <ilya@total-knowledge.com>,
	"'David Daney'" <ddaney@avtrex.com>
Cc:	<ppopov@embeddedalley.com>, "'Brett Foster'" <fosterb@uoguelph.ca>,
	<linux-mips@linux-mips.org>
Subject: RE: Cross-compiling Linux problem
Date:	Sat, 8 Oct 2005 07:52:24 -0600
Message-ID: <003c01c5cc0f$83a19e30$0400a8c0@buzz>
MIME-Version: 1.0
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: 7bit
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook, Build 10.0.6626
Importance: Normal
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180
In-Reply-To: <4346FD34.8000100@total-knowledge.com>
Return-Path: <unixe@comcast.net>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9201
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: unixe@comcast.net
Precedence: bulk
X-list: linux-mips

It appears that the function __fixup_bigphys_addr is not inline anymore but 
A callable function.  I removed the "inline " qualifier from the extern
declaration in
Ioremap.h (if CONFIG_64BIT_PHYS_ADDR is declared) and linux built ok.
Kyle 

-----Original Message-----
From: Ilya A. Volynets-Evenbakh [mailto:ilya@total-knowledge.com] 
Sent: Friday, October 07, 2005 4:57 PM
To: David Daney
Cc: Kyle Unice; ppopov@embeddedalley.com; 'Brett Foster';
linux-mips@linux-mips.org
Subject: Re: Cross-compiling Linux problem

CVS is not where development happens, but it is still updated, according 
to Ralf.

David Daney wrote:

> Kyle Unice wrote:
>
>> I am using gcc-3.4.4 and the cvs checkout of linux-mips.org tree.
>> Kyle
>
>
> Not withstanding Maciej's comment about the real problem being the 
> broken header file, I give you a quote from 
> http://www.linux-mips.org/wiki/Git : "At this time only the linux.git 
> repository is in production use.... all other archives are only 
> historical."
>
> You might consider getting your code from the git repository as the 
> CVS repository is no longer being maintained.
>
> David Daney
>
>

-- 
Ilya A. Volynets-Evenbakh
Total Knowledge. CTO
http://www.total-knowledge.com


From carlo@linux.it Sun Oct  9 14:41:08 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Sun, 09 Oct 2005 14:41:30 +0100 (BST)
Received: from mp1-smtp-3.eutelia.it ([62.94.10.163]:8870 "EHLO
	smtp.eutelia.it") by ftp.linux-mips.org with ESMTP id S8133653AbVJINlI
	(ORCPT <rfc822;linux-mips@linux-mips.org>);
	Sun, 9 Oct 2005 14:41:08 +0100
Received: from voyager (ip-96-162.sn2.eutelia.it [83.211.96.162])
	by smtp.eutelia.it (Eutelia) with ESMTP id 53D0517F749
	for <linux-mips@linux-mips.org>; Sun,  9 Oct 2005 15:41:07 +0200 (CEST)
Received: by voyager (Postfix, from userid 1000)
	id E09331A5E6A; Sun,  9 Oct 2005 15:41:06 +0200 (CEST)
Date:	Sun, 9 Oct 2005 15:41:06 +0200
From:	Carlo Perassi <carlo@linux.it>
To:	linux-mips@linux-mips.org
Subject: rfc about an uncommented string
Message-ID: <20051009134106.GB9091@voyager>
Reply-To: carlo@linux.it
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
User-Agent: Mutt/1.5.11
Return-Path: <carlo@linux.it>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9203
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: carlo@linux.it
Precedence: bulk
X-list: linux-mips
Content-Length: 1081
Lines: 34

Hi.
As suggested (*) by Arthur Othieno on the kernel-janitors mailing list,
I bounce here this email for collecting comments.
The old email refers to 2.6.13-rc6 but the code is still the same on
2.6.14-rc3.
Thank you.

Hi.

I'd like to collect some comments about the following code
segment I found in
linux-2.6.13-rc6/arch/mips/ite-boards/generic/it8172_setup.c
(the "^^^" sequence is not mine, it's in the code)

#ifdef CONFIG_SERIO_I8042
/*
 * According to the ITE Special BIOS Note for waking up the
 * keyboard controller...
 */
static int init_8712_keyboard(void)
{
	unsigned int cmd_port = 0x14000064;
	unsigned int data_port = 0x14000060;
	                         ^^^^^^^^^^^
	Somebody here doesn't grok the concept of io ports.

(*)
http://lists.osdl.org/pipermail/kernel-janitors/2005-August/004704.html
http://lists.osdl.org/pipermail/kernel-janitors/2005-August/004705.html
http://lists.osdl.org/pipermail/kernel-janitors/2005-August/004707.html
http://lists.osdl.org/pipermail/kernel-janitors/2005-October/004955.html

-- 
Carlo Perassi - http://www.linux.it/~carlo/

From ralf@linux-mips.org Mon Oct 10 12:11:57 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 10 Oct 2005 12:12:13 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:7697 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133471AbVJJLL5 (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Mon, 10 Oct 2005 12:11:57 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j9ABBoOk007817;
	Mon, 10 Oct 2005 12:11:50 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j9ABBo8Y007816;
	Mon, 10 Oct 2005 12:11:50 +0100
Date:	Mon, 10 Oct 2005 12:11:49 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	Carlo Perassi <carlo@linux.it>
Cc:	linux-mips@linux-mips.org
Subject: Re: rfc about an uncommented string
Message-ID: <20051010111149.GC2661@linux-mips.org>
References: <20051009134106.GB9091@voyager>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20051009134106.GB9091@voyager>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9204
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips
Content-Length: 818
Lines: 23

On Sun, Oct 09, 2005 at 03:41:06PM +0200, Carlo Perassi wrote:

> Hi.
> As suggested (*) by Arthur Othieno on the kernel-janitors mailing list,
> I bounce here this email for collecting comments.
> The old email refers to 2.6.13-rc6 but the code is still the same on
> 2.6.14-rc3.
> Thank you.
> 
> Hi.
> 
> I'd like to collect some comments about the following code
> segment I found in
> linux-2.6.13-rc6/arch/mips/ite-boards/generic/it8172_setup.c
> (the "^^^" sequence is not mine, it's in the code)

I know, I put it there.  The code was obviously broken, so I place this
hard to miss not right into the middle of it.  It's there since ages and
nobody did complain.  So unless somebody complains - and that complaint
better include some patches - I will delete support for the IT8172 and
it's eval board.

  Ralf

From fxzhang@ict.ac.cn Mon Oct 10 12:23:40 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 10 Oct 2005 12:23:59 +0100 (BST)
Received: from webmail.ict.ac.cn ([159.226.39.7]:21482 "HELO ict.ac.cn")
	by ftp.linux-mips.org with SMTP id S8133471AbVJJLXk (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Mon, 10 Oct 2005 12:23:40 +0100
Received: (qmail 5612 invoked by uid 507); 10 Oct 2005 11:15:33 -0000
Received: from unknown (HELO ?192.168.2.202?) (fxzhang@222.92.8.142)
  by ict.ac.cn with SMTP; 10 Oct 2005 11:15:33 -0000
Message-ID: <434A4F27.6010301@ict.ac.cn>
Date:	Mon, 10 Oct 2005 19:23:19 +0800
From:	Fuxin Zhang <fxzhang@ict.ac.cn>
User-Agent: Mozilla Thunderbird 1.0.2 (Windows/20050317)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	Ralf Baechle <ralf@linux-mips.org>
CC:	Carlo Perassi <carlo@linux.it>, linux-mips@linux-mips.org
Subject: Re: rfc about an uncommented string
References: <20051009134106.GB9091@voyager> <20051010111149.GC2661@linux-mips.org>
In-Reply-To: <20051010111149.GC2661@linux-mips.org>
X-Enigmail-Version: 0.92.0.0
Content-Type: text/plain; charset=gb18030
Content-Transfer-Encoding: 7bit
Return-Path: <fxzhang@ict.ac.cn>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9205
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: fxzhang@ict.ac.cn
Precedence: bulk
X-list: linux-mips
Content-Length: 1251
Lines: 38

We are using 8172 for 2.4 kernels presently,although may drop it
sometime later.

I don't read the 2.6 code,but it seems it remains the same as the copy
in 2.4(except that #ifdef changes).I can't see why the code is broken?
In case you mean the ioport address,mips_io_port_base for that board is
0xa0000000, inb(0x14000060) is reading from 0xb4000060, which is correct
for it.

Ralf Baechle wrote:
> On Sun, Oct 09, 2005 at 03:41:06PM +0200, Carlo Perassi wrote:
> 
> 
>>Hi.
>>As suggested (*) by Arthur Othieno on the kernel-janitors mailing list,
>>I bounce here this email for collecting comments.
>>The old email refers to 2.6.13-rc6 but the code is still the same on
>>2.6.14-rc3.
>>Thank you.
>>
>>Hi.
>>
>>I'd like to collect some comments about the following code
>>segment I found in
>>linux-2.6.13-rc6/arch/mips/ite-boards/generic/it8172_setup.c
>>(the "^^^" sequence is not mine, it's in the code)
> 
> 
> I know, I put it there.  The code was obviously broken, so I place this
> hard to miss not right into the middle of it.  It's there since ages and
> nobody did complain.  So unless somebody complains - and that complaint
> better include some patches - I will delete support for the IT8172 and
> it's eval board.
> 
>   Ralf
> 
> 
> 

From geert@linux-m68k.org Mon Oct 10 12:29:01 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 10 Oct 2005 12:29:24 +0100 (BST)
Received: from witte.sonytel.be ([80.88.33.193]:5082 "EHLO witte.sonytel.be")
	by ftp.linux-mips.org with ESMTP id S8133471AbVJJL3B (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Mon, 10 Oct 2005 12:29:01 +0100
Received: from numbat.sonytel.be (mail.sonytel.be [43.221.60.197])
	by witte.sonytel.be (8.12.10/8.12.10) with ESMTP id j9ABStva028230;
	Mon, 10 Oct 2005 13:28:55 +0200 (MEST)
Date:	Mon, 10 Oct 2005 13:28:43 +0200 (CEST)
From:	Geert Uytterhoeven <geert@linux-m68k.org>
To:	Fuxin Zhang <fxzhang@ict.ac.cn>
cc:	Ralf Baechle <ralf@linux-mips.org>, Carlo Perassi <carlo@linux.it>,
	Linux/MIPS Development <linux-mips@linux-mips.org>
Subject: Re: rfc about an uncommented string
In-Reply-To: <434A4F27.6010301@ict.ac.cn>
Message-ID: <Pine.LNX.4.62.0510101327500.5402@numbat.sonytel.be>
References: <20051009134106.GB9091@voyager> <20051010111149.GC2661@linux-mips.org>
 <434A4F27.6010301@ict.ac.cn>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Return-Path: <geert@linux-m68k.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9206
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: geert@linux-m68k.org
Precedence: bulk
X-list: linux-mips
Content-Length: 1747
Lines: 45

On Mon, 10 Oct 2005, Fuxin Zhang wrote:
> We are using 8172 for 2.4 kernels presently,although may drop it
> sometime later.
> 
> I don't read the 2.6 code,but it seems it remains the same as the copy
> in 2.4(except that #ifdef changes).I can't see why the code is broken?
> In case you mean the ioport address,mips_io_port_base for that board is
> 0xa0000000, inb(0x14000060) is reading from 0xb4000060, which is correct
> for it.

Shouldn't mips_io_port_base be 0xb4000000 for your board, so inb(0x60) looks
more like a PC-style keyboard controller access?

> Ralf Baechle wrote:
> > On Sun, Oct 09, 2005 at 03:41:06PM +0200, Carlo Perassi wrote:
> >>As suggested (*) by Arthur Othieno on the kernel-janitors mailing list,
> >>I bounce here this email for collecting comments.
> >>The old email refers to 2.6.13-rc6 but the code is still the same on
> >>2.6.14-rc3.
> >>Thank you.
> >>
> >>Hi.
> >>
> >>I'd like to collect some comments about the following code
> >>segment I found in
> >>linux-2.6.13-rc6/arch/mips/ite-boards/generic/it8172_setup.c
> >>(the "^^^" sequence is not mine, it's in the code)
> > 
> > 
> > I know, I put it there.  The code was obviously broken, so I place this
> > hard to miss not right into the middle of it.  It's there since ages and
> > nobody did complain.  So unless somebody complains - and that complaint
> > better include some patches - I will delete support for the IT8172 and
> > it's eval board.

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds

From fxzhang@ict.ac.cn Mon Oct 10 12:43:37 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 10 Oct 2005 12:43:55 +0100 (BST)
Received: from webmail.ict.ac.cn ([159.226.39.7]:48875 "HELO ict.ac.cn")
	by ftp.linux-mips.org with SMTP id S8133681AbVJJLnh (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Mon, 10 Oct 2005 12:43:37 +0100
Received: (qmail 7691 invoked by uid 507); 10 Oct 2005 11:35:32 -0000
Received: from unknown (HELO ?192.168.2.202?) (fxzhang@222.92.8.142)
  by ict.ac.cn with SMTP; 10 Oct 2005 11:35:32 -0000
Message-ID: <434A53D3.1080106@ict.ac.cn>
Date:	Mon, 10 Oct 2005 19:43:15 +0800
From:	Fuxin Zhang <fxzhang@ict.ac.cn>
User-Agent: Mozilla Thunderbird 1.0.2 (Windows/20050317)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	Geert Uytterhoeven <geert@linux-m68k.org>
CC:	Ralf Baechle <ralf@linux-mips.org>, Carlo Perassi <carlo@linux.it>,
	Linux/MIPS Development <linux-mips@linux-mips.org>
Subject: Re: rfc about an uncommented string
References: <20051009134106.GB9091@voyager> <20051010111149.GC2661@linux-mips.org> <434A4F27.6010301@ict.ac.cn> <Pine.LNX.4.62.0510101327500.5402@numbat.sonytel.be>
In-Reply-To: <Pine.LNX.4.62.0510101327500.5402@numbat.sonytel.be>
X-Enigmail-Version: 0.92.0.0
Content-Type: text/plain; charset=gb18030
Content-Transfer-Encoding: 7bit
Return-Path: <fxzhang@ict.ac.cn>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9207
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: fxzhang@ict.ac.cn
Precedence: bulk
X-list: linux-mips
Content-Length: 2059
Lines: 61



Geert Uytterhoeven wrote:
> On Mon, 10 Oct 2005, Fuxin Zhang wrote:
> 
>>We are using 8172 for 2.4 kernels presently,although may drop it
>>sometime later.
>>
>>I don't read the 2.6 code,but it seems it remains the same as the copy
>>in 2.4(except that #ifdef changes).I can't see why the code is broken?
>>In case you mean the ioport address,mips_io_port_base for that board is
>>0xa0000000, inb(0x14000060) is reading from 0xb4000060, which is correct
>>for it.
> 
> 
> Shouldn't mips_io_port_base be 0xb4000000 for your board, so inb(0x60) looks
> more like a PC-style keyboard controller access?
It is not my code. But anyway the board has more than one discontinuous
io ranges(0xb4000000 is in fact for it8712 superio and legacy ios,
it8172's system registers are located around 0xb8000000, while others
begins at 0xb4010000).
> 
> 
>>Ralf Baechle wrote:
>>
>>>On Sun, Oct 09, 2005 at 03:41:06PM +0200, Carlo Perassi wrote:
>>>
>>>>As suggested (*) by Arthur Othieno on the kernel-janitors mailing list,
>>>>I bounce here this email for collecting comments.
>>>>The old email refers to 2.6.13-rc6 but the code is still the same on
>>>>2.6.14-rc3.
>>>>Thank you.
>>>>
>>>>Hi.
>>>>
>>>>I'd like to collect some comments about the following code
>>>>segment I found in
>>>>linux-2.6.13-rc6/arch/mips/ite-boards/generic/it8172_setup.c
>>>>(the "^^^" sequence is not mine, it's in the code)
>>>
>>>
>>>I know, I put it there.  The code was obviously broken, so I place this
>>>hard to miss not right into the middle of it.  It's there since ages and
>>>nobody did complain.  So unless somebody complains - and that complaint
>>>better include some patches - I will delete support for the IT8172 and
>>>it's eval board.
> 
> 
> Gr{oetje,eeting}s,
> 
> 						Geert
> 
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
> 
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
> 							    -- Linus Torvalds
> 
> 
> 

From geert@linux-m68k.org Mon Oct 10 12:46:39 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 10 Oct 2005 12:46:55 +0100 (BST)
Received: from witte.sonytel.be ([80.88.33.193]:20445 "EHLO witte.sonytel.be")
	by ftp.linux-mips.org with ESMTP id S8133681AbVJJLqj (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Mon, 10 Oct 2005 12:46:39 +0100
Received: from numbat.sonytel.be (mail.sonytel.be [43.221.60.197])
	by witte.sonytel.be (8.12.10/8.12.10) with ESMTP id j9ABkava028769;
	Mon, 10 Oct 2005 13:46:36 +0200 (MEST)
Date:	Mon, 10 Oct 2005 13:46:25 +0200 (CEST)
From:	Geert Uytterhoeven <geert@linux-m68k.org>
To:	Fuxin Zhang <fxzhang@ict.ac.cn>
cc:	Ralf Baechle <ralf@linux-mips.org>, Carlo Perassi <carlo@linux.it>,
	Linux/MIPS Development <linux-mips@linux-mips.org>
Subject: Re: rfc about an uncommented string
In-Reply-To: <434A53D3.1080106@ict.ac.cn>
Message-ID: <Pine.LNX.4.62.0510101344450.5402@numbat.sonytel.be>
References: <20051009134106.GB9091@voyager> <20051010111149.GC2661@linux-mips.org>
 <434A4F27.6010301@ict.ac.cn> <Pine.LNX.4.62.0510101327500.5402@numbat.sonytel.be>
 <434A53D3.1080106@ict.ac.cn>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Return-Path: <geert@linux-m68k.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9208
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: geert@linux-m68k.org
Precedence: bulk
X-list: linux-mips
Content-Length: 1450
Lines: 36

On Mon, 10 Oct 2005, Fuxin Zhang wrote:
> Geert Uytterhoeven wrote:
> > On Mon, 10 Oct 2005, Fuxin Zhang wrote:
> >>We are using 8172 for 2.4 kernels presently,although may drop it
> >>sometime later.
> >>
> >>I don't read the 2.6 code,but it seems it remains the same as the copy
> >>in 2.4(except that #ifdef changes).I can't see why the code is broken?
> >>In case you mean the ioport address,mips_io_port_base for that board is
> >>0xa0000000, inb(0x14000060) is reading from 0xb4000060, which is correct
> >>for it.
> > 
> > Shouldn't mips_io_port_base be 0xb4000000 for your board, so inb(0x60) looks
> > more like a PC-style keyboard controller access?
> It is not my code. But anyway the board has more than one discontinuous
> io ranges(0xb4000000 is in fact for it8712 superio and legacy ios,

So 0xb4000000 is the base for ISA and PCI I/O port accesses, right? Hence if
mips_io_port_base is 0xb4000000, all drivers for PCI (and ISA) expansion cards
that use inb() and friends will work.

> it8172's system registers are located around 0xb8000000, while others
> begins at 0xb4010000).

So these can use ITE8172-specific access macros.

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds

From ralf@linux-mips.org Mon Oct 10 12:51:36 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 10 Oct 2005 12:51:54 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:50461 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133681AbVJJLvg (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Mon, 10 Oct 2005 12:51:36 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j9ABpHpx025975;
	Mon, 10 Oct 2005 12:51:17 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j9ABpF6n025974;
	Mon, 10 Oct 2005 12:51:15 +0100
Date:	Mon, 10 Oct 2005 12:51:15 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	Geert Uytterhoeven <geert@linux-m68k.org>
Cc:	Fuxin Zhang <fxzhang@ict.ac.cn>, Carlo Perassi <carlo@linux.it>,
	Linux/MIPS Development <linux-mips@linux-mips.org>
Subject: Re: rfc about an uncommented string
Message-ID: <20051010115115.GD2661@linux-mips.org>
References: <20051009134106.GB9091@voyager> <20051010111149.GC2661@linux-mips.org> <434A4F27.6010301@ict.ac.cn> <Pine.LNX.4.62.0510101327500.5402@numbat.sonytel.be>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <Pine.LNX.4.62.0510101327500.5402@numbat.sonytel.be>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9209
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips
Content-Length: 632
Lines: 17

On Mon, Oct 10, 2005 at 01:28:43PM +0200, Geert Uytterhoeven wrote:

> > I don't read the 2.6 code,but it seems it remains the same as the copy
> > in 2.4(except that #ifdef changes).I can't see why the code is broken?
> > In case you mean the ioport address,mips_io_port_base for that board is
> > 0xa0000000, inb(0x14000060) is reading from 0xb4000060, which is correct
> > for it.
> 
> Shouldn't mips_io_port_base be 0xb4000000 for your board, so inb(0x60) looks
> more like a PC-style keyboard controller access?

Exactly.

Anyway - what this did actually demonstrate is that at least there's
no 2.6 user of the IT8172.

  Ralf

From macro@linux-mips.org Mon Oct 10 14:18:51 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 10 Oct 2005 14:19:11 +0100 (BST)
Received: from pollux.ds.pg.gda.pl ([153.19.208.7]:49170 "EHLO
	pollux.ds.pg.gda.pl") by ftp.linux-mips.org with ESMTP
	id S3465557AbVJJNSv (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Mon, 10 Oct 2005 14:18:51 +0100
Received: from localhost (localhost [127.0.0.1])
	by pollux.ds.pg.gda.pl (Postfix) with ESMTP
	id 39EBCE1C9C; Mon, 10 Oct 2005 15:18:42 +0200 (CEST)
Received: from pollux.ds.pg.gda.pl ([127.0.0.1])
 by localhost (pollux [127.0.0.1]) (amavisd-new, port 10024) with ESMTP
 id 13447-02; Mon, 10 Oct 2005 15:18:42 +0200 (CEST)
Received: from piorun.ds.pg.gda.pl (piorun.ds.pg.gda.pl [153.19.208.8])
	by pollux.ds.pg.gda.pl (Postfix) with ESMTP
	id 011C8E1C93; Mon, 10 Oct 2005 15:18:42 +0200 (CEST)
Received: from blysk.ds.pg.gda.pl (macro@blysk.ds.pg.gda.pl [153.19.208.6])
	by piorun.ds.pg.gda.pl (8.13.3/8.13.1) with ESMTP id j9ADIjrb031088;
	Mon, 10 Oct 2005 15:18:45 +0200
Date:	Mon, 10 Oct 2005 14:18:52 +0100 (BST)
From:	"Maciej W. Rozycki" <macro@linux-mips.org>
To:	Geert Uytterhoeven <geert@linux-m68k.org>
Cc:	Fuxin Zhang <fxzhang@ict.ac.cn>,
	Ralf Baechle <ralf@linux-mips.org>,
	Carlo Perassi <carlo@linux.it>,
	Linux/MIPS Development <linux-mips@linux-mips.org>
Subject: Re: rfc about an uncommented string
In-Reply-To: <Pine.LNX.4.62.0510101344450.5402@numbat.sonytel.be>
Message-ID: <Pine.LNX.4.55.0510101407310.18063@blysk.ds.pg.gda.pl>
References: <20051009134106.GB9091@voyager> <20051010111149.GC2661@linux-mips.org>
 <434A4F27.6010301@ict.ac.cn> <Pine.LNX.4.62.0510101327500.5402@numbat.sonytel.be>
 <434A53D3.1080106@ict.ac.cn> <Pine.LNX.4.62.0510101344450.5402@numbat.sonytel.be>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
X-Virus-Scanned: ClamAV 0.87/1125/Mon Oct 10 11:16:52 2005 on piorun.ds.pg.gda.pl
X-Virus-Status:	Clean
X-Virus-Scanned: by amavisd-new at pollux.ds.pg.gda.pl
Return-Path: <macro@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9210
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: macro@linux-mips.org
Precedence: bulk
X-list: linux-mips
Content-Length: 1165
Lines: 25

On Mon, 10 Oct 2005, Geert Uytterhoeven wrote:

> > It is not my code. But anyway the board has more than one discontinuous
> > io ranges(0xb4000000 is in fact for it8712 superio and legacy ios,
> 
> So 0xb4000000 is the base for ISA and PCI I/O port accesses, right? Hence if
> mips_io_port_base is 0xb4000000, all drivers for PCI (and ISA) expansion cards
> that use inb() and friends will work.
> 
> > it8172's system registers are located around 0xb8000000, while others
> > begins at 0xb4010000).
> 
> So these can use ITE8172-specific access macros.

 IOW, MIPS has no concept of I/O space in the CPU, so whatever is decoded
as I/O cycles to PCI/EISA/ISA is I/O and everything else is MMIO.  In
particular I/O spaces are private to their respective buses -- if there
are more than one disjoint PCI/EISA/ISA buses in a given system, then each
of them can have its private 4GB or 16MB (or whatever) space reserved for
I/O cycles.  If there is only one PCI/EISA/ISA bus, then mips_io_port_base
should refer to the base address where decoding as I/O cycles for that bus
starts, holding an appropriate virtual mapping, typically obtained with
ioremap().

  Maciej

From Don_Hiatt@pmc-sierra.com Tue Oct 11 19:21:41 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 11 Oct 2005 19:21:57 +0100 (BST)
Received: from mother.pmc-sierra.com ([216.241.224.12]:32195 "HELO
	mother.pmc-sierra.bc.ca") by ftp.linux-mips.org with SMTP
	id S8133411AbVJKSVl (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 11 Oct 2005 19:21:41 +0100
Received: (qmail 27104 invoked by uid 101); 11 Oct 2005 18:21:34 -0000
Received: from unknown (HELO ogyruan.pmc-sierra.bc.ca) (216.241.226.236)
  by mother.pmc-sierra.com with SMTP; 11 Oct 2005 18:21:34 -0000
Received: from bby1exi01.pmc_nt.nt.pmc-sierra.bc.ca (bby1exi01.pmc-sierra.bc.ca [216.241.231.251])
	by ogyruan.pmc-sierra.bc.ca (8.13.3/8.12.7) with ESMTP id j9BILPLr027837
	for <linux-mips@linux-mips.org>; Tue, 11 Oct 2005 11:21:34 -0700
Received: by bby1exi01.pmc_nt.nt.pmc-sierra.bc.ca with Internet Mail Service (5.5.2656.59)
	id <RMQN2D0T>; Tue, 11 Oct 2005 11:21:36 -0700
Message-ID: <5C1FD43E5F1B824E83985A74F396286E5E9528@bby1exm08.pmc_nt.nt.pmc-sierra.bc.ca>
From:	Don Hiatt <Don_Hiatt@pmc-sierra.com>
To:	"'linux-mips@linux-mips.org'" <linux-mips@linux-mips.org>
Subject: git, rsync, and firewalls...
Date:	Tue, 11 Oct 2005 11:23:15 -0700
MIME-Version: 1.0
X-Mailer: Internet Mail Service (5.5.2656.59)
Content-Type: text/plain;
	charset="iso-8859-1"
Return-Path: <Don_Hiatt@pmc-sierra.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9211
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: Don_Hiatt@pmc-sierra.com
Precedence: bulk
X-list: linux-mips
Content-Length: 245
Lines: 8

Any ideas on how you would go about doing the initial git clone if
rsync is blocked? Of course I could do it at home and then carry
it back but all those bits get awful heavy.. :) Is it possible to
use wget to grab the repository?

Cheers,

don

From ilya@total-knowledge.com Tue Oct 11 20:06:45 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 11 Oct 2005 20:07:04 +0100 (BST)
Received: from alpha.total-knowledge.com ([205.217.158.170]:60582 "EHLO
	total-knowledge.com") by ftp.linux-mips.org with ESMTP
	id S8133421AbVJKTGp (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 11 Oct 2005 20:06:45 +0100
Received: (qmail 23858 invoked from network); 11 Oct 2005 12:06:43 -0700
Received: from users.sonicwall.com (HELO ?10.0.15.99?) (ilya@216.217.36.130)
  by alpha.total-knowledge.com with ESMTPA; 11 Oct 2005 12:06:43 -0700
Message-ID: <434C0D3E.7010408@total-knowledge.com>
Date:	Tue, 11 Oct 2005 12:06:38 -0700
From:	"Ilya A. Volynets-Evenbakh" <ilya@total-knowledge.com>
Organization: Total Knowledge
User-Agent: Mozilla Thunderbird 1.0.6 (X11/20050723)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	Don Hiatt <Don_Hiatt@pmc-sierra.com>
CC:	"'linux-mips@linux-mips.org'" <linux-mips@linux-mips.org>
Subject: Re: git, rsync, and firewalls...
References: <5C1FD43E5F1B824E83985A74F396286E5E9528@bby1exm08.pmc_nt.nt.pmc-sierra.bc.ca>
In-Reply-To: <5C1FD43E5F1B824E83985A74F396286E5E9528@bby1exm08.pmc_nt.nt.pmc-sierra.bc.ca>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Return-Path: <ilya@total-knowledge.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9212
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ilya@total-knowledge.com
Precedence: bulk
X-list: linux-mips
Content-Length: 420
Lines: 23

git clone http://www.linux-mips.org/pub/scm/linux.git



Don Hiatt wrote:

>Any ideas on how you would go about doing the initial git clone if
>rsync is blocked? Of course I could do it at home and then carry
>it back but all those bits get awful heavy.. :) Is it possible to
>use wget to grab the repository?
>
>Cheers,
>
>don
>
>  
>

-- 
Ilya A. Volynets-Evenbakh
Total Knowledge. CTO
http://www.total-knowledge.com


From djd20@kent.ac.uk Tue Oct 11 21:50:32 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 11 Oct 2005 21:51:03 +0100 (BST)
Received: from mx5.kent.ac.uk ([129.12.21.36]:50830 "EHLO mx5.kent.ac.uk")
	by ftp.linux-mips.org with ESMTP id S8133539AbVJKUuc (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Tue, 11 Oct 2005 21:50:32 +0100
Received: from hathor.ukc.ac.uk ([129.12.4.12])
	by mx5.kent.ac.uk with esmtps (TLSv1:AES256-SHA:256)
	(Exim 4.44)
	id 1EPR3y-0006Yi-No; Tue, 11 Oct 2005 21:49:30 +0100
Received: from myrtle.ukc.ac.uk ([129.12.3.176] ident=exim)
	by hathor.ukc.ac.uk with esmtps (TLSv1:AES256-SHA:256)
	(Exim 4.50)
	id 1EPR3y-0006m9-KM; Tue, 11 Oct 2005 21:49:30 +0100
Received: from myrtle.ukc.ac.uk ([129.12.3.176] ident=djd20)
	by myrtle.ukc.ac.uk with esmtps (TLSv1:AES256-SHA:256)
	(Exim 4.50)
	id 1EPR3y-0007YR-Cb; Tue, 11 Oct 2005 21:49:30 +0100
Date:	Tue, 11 Oct 2005 21:49:30 +0100 (BST)
From:	"D.J.Dimmich" <djd20@kent.ac.uk>
X-X-Sender: djd20@myrtle.ukc.ac.uk
To:	"Ilya A. Volynets-Evenbakh" <ilya@total-knowledge.com>
cc:	Don Hiatt <Don_Hiatt@pmc-sierra.com>,
	"'linux-mips@linux-mips.org'" <linux-mips@linux-mips.org>
Subject: Re: git, rsync, and firewalls...
In-Reply-To: <434C0D3E.7010408@total-knowledge.com>
Message-ID: <Pine.GSO.4.58.0510112147360.23481@myrtle.ukc.ac.uk>
References: <5C1FD43E5F1B824E83985A74F396286E5E9528@bby1exm08.pmc_nt.nt.pmc-sierra.bc.ca>
 <434C0D3E.7010408@total-knowledge.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
X-UKC-Mail-System: No virus detected
X-UKC-SpamCheck: 
X-UKC-MailScanner-From:	djd20@kent.ac.uk
Return-Path: <djd20@kent.ac.uk>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9213
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: djd20@kent.ac.uk
Precedence: bulk
X-list: linux-mips
Content-Length: 1258
Lines: 48

Hmm,

This is no good:

cg-clone http://www.linux-mips.org/pub/scm/linux.git linux-mips.git
defaulting to local storage area
21:41:28 URL:http://www.linux-mips.org/pub/scm/linux.git/refs/heads/master
[41/41] -> "refs/heads/origin" [1]
progress: 2 objects, 1003 bytes
error: File 658dc2bb726238c6eb05edf3eb2d35050c8beb1d
(http://www.linux-mips.org/pub/scm/linux.git/objects/65/8dc2bb726238c6eb05edf3eb2d35050c8beb1d)
corrupt

Cannot obtain needed blob 658dc2bb726238c6eb05edf3eb2d35050c8beb1d
while processing commit 0000000000000000000000000000000000000000.
error: cannot map sha1 file 658dc2bb726238c6eb05edf3eb2d35050c8beb1d
cg-pull: objects pull failed
cg-init: pull failed

cg (cogito) are wrapper scripts around git...  Something's no good...  the
rsync method bombs out at 97% - just hangs....

Any suggestions?

Thanks,
Damian

On Tue, 11 Oct 2005, Ilya A. Volynets-Evenbakh wrote:

> git clone http://www.linux-mips.org/pub/scm/linux.git
>
>
>
> Don Hiatt wrote:
>
> >Any ideas on how you would go about doing the initial git clone if
> >rsync is blocked? Of course I could do it at home and then carry
> >it back but all those bits get awful heavy.. :) Is it possible to
> >use wget to grab the repository?
> >
> >Cheers,
> >
> >don
> >
> >
> >
>
>

From ths@networkno.de Tue Oct 11 23:34:13 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 11 Oct 2005 23:34:33 +0100 (BST)
Received: from mx01.qsc.de ([213.148.129.14]:60647 "EHLO mx01.qsc.de")
	by ftp.linux-mips.org with ESMTP id S8133545AbVJKWeM (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Tue, 11 Oct 2005 23:34:12 +0100
Received: from port-195-158-179-121.dynamic.qsc.de ([195.158.179.121] helo=hattusa.textio)
	by mx01.qsc.de with esmtp (Exim 3.35 #1)
	id 1EPSh9-0001Bx-00; Wed, 12 Oct 2005 00:34:03 +0200
Received: from ths by hattusa.textio with local (Exim 4.54)
	id 1EPSh7-0004YU-A5; Wed, 12 Oct 2005 00:34:01 +0200
Date:	Wed, 12 Oct 2005 00:34:01 +0200
To:	"D.J.Dimmich" <djd20@kent.ac.uk>
Cc:	linux-mips@linux-mips.org
Subject: Re: git, rsync, and firewalls...
Message-ID: <20051011223401.GH21761@hattusa.textio>
References: <5C1FD43E5F1B824E83985A74F396286E5E9528@bby1exm08.pmc_nt.nt.pmc-sierra.bc.ca> <434C0D3E.7010408@total-knowledge.com> <Pine.GSO.4.58.0510112147360.23481@myrtle.ukc.ac.uk>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <Pine.GSO.4.58.0510112147360.23481@myrtle.ukc.ac.uk>
User-Agent: Mutt/1.5.11
From:	Thiemo Seufer <ths@networkno.de>
Return-Path: <ths@networkno.de>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9214
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ths@networkno.de
Precedence: bulk
X-list: linux-mips
Content-Length: 1034
Lines: 30

D.J.Dimmich wrote:
> Hmm,
> 
> This is no good:
> 
> cg-clone http://www.linux-mips.org/pub/scm/linux.git linux-mips.git
> defaulting to local storage area
> 21:41:28 URL:http://www.linux-mips.org/pub/scm/linux.git/refs/heads/master
> [41/41] -> "refs/heads/origin" [1]
> progress: 2 objects, 1003 bytes
> error: File 658dc2bb726238c6eb05edf3eb2d35050c8beb1d
> (http://www.linux-mips.org/pub/scm/linux.git/objects/65/8dc2bb726238c6eb05edf3eb2d35050c8beb1d)
> corrupt
> 
> Cannot obtain needed blob 658dc2bb726238c6eb05edf3eb2d35050c8beb1d
> while processing commit 0000000000000000000000000000000000000000.
> error: cannot map sha1 file 658dc2bb726238c6eb05edf3eb2d35050c8beb1d
> cg-pull: objects pull failed
> cg-init: pull failed
> 
> cg (cogito) are wrapper scripts around git...  Something's no good...  the
> rsync method bombs out at 97% - just hangs....
> 
> Any suggestions?

Use a sufficiently new git, and raw git instead of cogito (as described
in the wiki page at www.linux-mips.org). At least this works for me.


Thiemo

From imipak@yahoo.com Tue Oct 11 23:40:22 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 11 Oct 2005 23:40:41 +0100 (BST)
Received: from web31502.mail.mud.yahoo.com ([68.142.198.131]:1190 "HELO
	web31502.mail.mud.yahoo.com") by ftp.linux-mips.org with SMTP
	id S3465584AbVJKWkW (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 11 Oct 2005 23:40:22 +0100
Received: (qmail 60211 invoked by uid 60001); 11 Oct 2005 22:40:09 -0000
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
  s=s1024; d=yahoo.com;
  h=Message-ID:Received:Date:From:Subject:To:MIME-Version:Content-Type:Content-Transfer-Encoding;
  b=fzIa6VklEEodefr+/wYUCMuTZT40M2nhDC+7XDXPQczwiYv350c68p+Bdaffll+bPRO1Cm024+Wm01OrBqdgMakLiwIoWMAk3G62gE2RIs1DiVA3Bjd6V5G3ZyZY5RquVq3Oolg1iCooMnkEv5UhxYpWkxWJJlM3Er3Blk8dlmU=  ;
Message-ID: <20051011224009.60209.qmail@web31502.mail.mud.yahoo.com>
Received: from [208.187.37.98] by web31502.mail.mud.yahoo.com via HTTP; Tue, 11 Oct 2005 15:40:09 PDT
Date:	Tue, 11 Oct 2005 15:40:09 -0700 (PDT)
From:	Jonathan Day <imipak@yahoo.com>
Subject: Run into another Linux kernel compile problem
To:	linux-mips@linux-mips.org
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Return-Path: <imipak@yahoo.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9215
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: imipak@yahoo.com
Precedence: bulk
X-list: linux-mips
Content-Length: 2967
Lines: 90

I've got a working system for a Broadcom SB1, thanks
to the considerable help (and patches) from here, and
the helpful step-through on Linux From Scratch.
However, I've subsequently run into a problem when
upgrading the kernel, using the version in CVS on the
Linux-MIPS site. (I'm applying the same set of
patches, am using the same .config file, and have not
changed the toolchain. That's next on my list.)

The version in CVS on September 22nd
(linux-2.6.14-rc1-mipscvs-20050922) compiles fine.

The version currently in CVS
(linux-2.6.14-rc1-mipscvs-20051011) crashes out with
the following errors:

make
  CHK     include/linux/version.h
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/basic/split-include
  HOSTCC  scripts/basic/docproc
  SPLIT   include/linux/autoconf.h -> include/config/*
  CC      arch/mips/kernel/asm-offsets.s
In file included from include/asm/pgtable.h:19,
                 from include/linux/mm.h:36,
                 from
arch/mips/kernel/asm-offsets.c:15:
include/asm/io.h: In function 'outq':
include/asm/io.h:440: error: size of array 'type name'
is negative
include/asm/io.h: In function 'inq':
include/asm/io.h:440: error: size of array 'type name'
is negative
include/asm/io.h: In function 'outq_p':
include/asm/io.h:440: error: size of array 'type name'
is negative
include/asm/io.h: In function 'inq_p':
include/asm/io.h:440: error: size of array 'type name'
is negative
include/asm/io.h: In function 'mem_outq':
include/asm/io.h:440: error: size of array 'type name'
is negative
include/asm/io.h: In function 'mem_inq':
include/asm/io.h:440: error: size of array 'type name'
is negative
include/asm/io.h: In function 'mem_outq_p':
include/asm/io.h:440: error: size of array 'type name'
is negative
include/asm/io.h: In function 'mem_inq_p':
include/asm/io.h:440: error: size of array 'type name'
is negative
make[1]: *** [arch/mips/kernel/asm-offsets.s] Error 1
make: *** [prepare0] Error 2

If I delete lines 339-441 - which do a
BUILDIO_IOPORT(q, u64), conditional on it being a
64-bit compile - then the kernel will compile. I do,
however, get the following warnings:

include/asm/io.h: In function 'outsq':
include/asm/io.h:517: warning: implicit declaration of
function 'mem_outq'
include/asm/io.h: In function 'insq':
include/asm/io.h:517: warning: implicit declaration of
function 'mem_inq'

I'm guessing that the BUILDIO_IOPORT() is setting up
these calls, but it's not quite clear to me as to
where.

The only obvious difference in the macro call from any
of the other macros in that group is the use of u64.
Declaring a dummy variable at the start of the header
file of this type does not produce any warnings or
errors, so I'm satisfied that the type definition
exists.

An inspection of the .config file verifies that the
CPU is declared as an SB1, and that it is a 64-bit
kernel build.

Any ideas?



	
		
__________________________________ 
Yahoo! Mail - PC Magazine Editors' Choice 2005 
http://mail.yahoo.com

From ralf@linux-mips.org Wed Oct 12 14:09:47 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 12 Oct 2005 14:10:07 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:54547 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133549AbVJLNJr (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Wed, 12 Oct 2005 14:09:47 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j9CD9gdQ008774;
	Wed, 12 Oct 2005 14:09:42 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j9CD9fkj008773;
	Wed, 12 Oct 2005 14:09:41 +0100
Date:	Wed, 12 Oct 2005 14:09:41 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	Jonathan Day <imipak@yahoo.com>
Cc:	linux-mips@linux-mips.org
Subject: Re: Run into another Linux kernel compile problem
Message-ID: <20051012130941.GA6955@linux-mips.org>
References: <20051011224009.60209.qmail@web31502.mail.mud.yahoo.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20051011224009.60209.qmail@web31502.mail.mud.yahoo.com>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9216
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips
Content-Length: 326
Lines: 10

On Tue, Oct 11, 2005 at 03:40:09PM -0700, Jonathan Day wrote:

> The version currently in CVS
> (linux-2.6.14-rc1-mipscvs-20051011) crashes out with
> the following errors:

Use the version in git.  There will be _no_ checkins into the linux module
of the CVS archive anymore.  And yes, your problem is already fixed.

  Ralf

From ralf@linux-mips.org Wed Oct 12 14:29:56 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 12 Oct 2005 14:30:22 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:23565 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133455AbVJLN34 (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Wed, 12 Oct 2005 14:29:56 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j9CDTesQ010098;
	Wed, 12 Oct 2005 14:29:41 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j9CDTaKu010097;
	Wed, 12 Oct 2005 14:29:36 +0100
Date:	Wed, 12 Oct 2005 14:29:36 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	"D.J.Dimmich" <djd20@kent.ac.uk>
Cc:	"Ilya A. Volynets-Evenbakh" <ilya@total-knowledge.com>,
	Don Hiatt <Don_Hiatt@pmc-sierra.com>,
	"'linux-mips@linux-mips.org'" <linux-mips@linux-mips.org>
Subject: Re: git, rsync, and firewalls...
Message-ID: <20051012132935.GB6955@linux-mips.org>
References: <5C1FD43E5F1B824E83985A74F396286E5E9528@bby1exm08.pmc_nt.nt.pmc-sierra.bc.ca> <434C0D3E.7010408@total-knowledge.com> <Pine.GSO.4.58.0510112147360.23481@myrtle.ukc.ac.uk>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <Pine.GSO.4.58.0510112147360.23481@myrtle.ukc.ac.uk>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9217
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips
Content-Length: 717
Lines: 18

On Tue, Oct 11, 2005 at 09:49:30PM +0100, D.J.Dimmich wrote:

> Cannot obtain needed blob 658dc2bb726238c6eb05edf3eb2d35050c8beb1d
> while processing commit 0000000000000000000000000000000000000000.
> error: cannot map sha1 file 658dc2bb726238c6eb05edf3eb2d35050c8beb1d
> cg-pull: objects pull failed
> cg-init: pull failed
> 
> cg (cogito) are wrapper scripts around git...  Something's no good...  the
> rsync method bombs out at 97% - just hangs....

I've seen rsync hanging like this frequently when certain types of
firewall configurations were involved.  The #1 troublemaker have been
certain older Cisco PIX versions but there are others.

Anyway, cloning via http works fine, I've just verified that.

  Ralf

From ralf@linux-mips.org Thu Oct 13 12:59:57 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 13 Oct 2005 13:00:12 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:35334 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S3458542AbVJML75 (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 13 Oct 2005 12:59:57 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j9DBxjPn005185;
	Thu, 13 Oct 2005 12:59:45 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j9DBwAt5005092;
	Thu, 13 Oct 2005 12:58:10 +0100
Date:	Thu, 13 Oct 2005 12:58:09 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	Kyle Unice <unixe@comcast.net>
Cc:	"'Ilya A. Volynets-Evenbakh'" <ilya@total-knowledge.com>,
	"'David Daney'" <ddaney@avtrex.com>, ppopov@embeddedalley.com,
	"'Brett Foster'" <fosterb@uoguelph.ca>, linux-mips@linux-mips.org
Subject: Re: Cross-compiling Linux problem
Message-ID: <20051013115809.GA2654@linux-mips.org>
References: <4346FD34.8000100@total-knowledge.com> <003c01c5cc0f$83a19e30$0400a8c0@buzz>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <003c01c5cc0f$83a19e30$0400a8c0@buzz>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9218
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips
Content-Length: 350
Lines: 10

On Sat, Oct 08, 2005 at 07:52:24AM -0600, Kyle Unice wrote:

> It appears that the function __fixup_bigphys_addr is not inline anymore but 
> A callable function.  I removed the "inline " qualifier from the extern
> declaration in
> Ioremap.h (if CONFIG_64BIT_PHYS_ADDR is declared) and linux built ok.

Thanks for noting; fixed that in git.

  Ralf

From ralf@linux-mips.org Thu Oct 13 13:08:10 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 13 Oct 2005 13:08:26 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:60679 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S3458542AbVJMMIK (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 13 Oct 2005 13:08:10 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j9DC7xmI005486;
	Thu, 13 Oct 2005 13:07:59 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j9DC7xhX005485;
	Thu, 13 Oct 2005 13:07:59 +0100
Date:	Thu, 13 Oct 2005 13:07:59 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	"Ilya A. Volynets-Evenbakh" <ilya@total-knowledge.com>
Cc:	David Daney <ddaney@avtrex.com>, Kyle Unice <unixe@comcast.net>,
	ppopov@embeddedalley.com, "'Brett Foster'" <fosterb@uoguelph.ca>,
	linux-mips@linux-mips.org
Subject: Re: Cross-compiling Linux problem
Message-ID: <20051013120759.GB2654@linux-mips.org>
References: <002d01c5cb89$a4f1b830$0400a8c0@buzz> <4346F65B.6050800@avtrex.com> <4346FD34.8000100@total-knowledge.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <4346FD34.8000100@total-knowledge.com>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9219
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips
Content-Length: 299
Lines: 9

On Fri, Oct 07, 2005 at 03:56:52PM -0700, Ilya A. Volynets-Evenbakh wrote:

> CVS is not where development happens, but it is still updated, according 
> to Ralf.

I was considering to do that but haven't cooked the necessary scripts yet.
Fortunately there doesn't seem to be too much need.

  Ralf

From ralf@linux-mips.org Thu Oct 13 15:04:22 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 13 Oct 2005 15:06:30 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:53268 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133482AbVJMOEW (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 13 Oct 2005 15:04:22 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j9DE4G8L009770;
	Thu, 13 Oct 2005 15:04:17 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j9DE4FWj009769;
	Thu, 13 Oct 2005 15:04:15 +0100
Date:	Thu, 13 Oct 2005 15:04:15 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Cc:	linux-mips@linux-mips.org
Subject: Re: [PATCH] fix possible sleeping in atomic on setup/restore sigcontext
Message-ID: <20051013140415.GC2654@linux-mips.org>
References: <20051007.235152.75184664.anemo@mba.ocn.ne.jp>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20051007.235152.75184664.anemo@mba.ocn.ne.jp>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9220
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips
Content-Length: 728
Lines: 19

On Fri, Oct 07, 2005 at 11:51:52PM +0900, Atsushi Nemoto wrote:

> The setup_sigcontect/restore_sigcontext might sleep on
> put_user/get_user with preemption disabled (i.e. atomic context).
> Sleeping in atomic context is not allowed.  This patch fixes this
> problem using temporary variable (struct sigcontext tmpsc).
> 
> Another possible fix might be rewriting
> restore_fp_context/save_fp_context to copy to/from current
> thread_struct and use them with restore_fp/save_fp.

I think much of the 87d54649f67d8ffe0a8d8176de8c210a6c4bb4a7 preemption
patch is flawed and the problem you were trying to fix are in part just
caused by it.

Rule of thumb - if there's a preempt_disable anywhere, it's probably
wrong ...

   Ralf

From ralf@linux-mips.org Thu Oct 13 20:32:30 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 13 Oct 2005 20:32:46 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:54047 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S3465602AbVJMTca (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 13 Oct 2005 20:32:30 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j9DJWP8i003908
	for <linux-mips@linux-mips.org>; Thu, 13 Oct 2005 20:32:25 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j9DJWPsL003907
	for linux-mips@linux-mips.org; Thu, 13 Oct 2005 20:32:25 +0100
Date:	Thu, 13 Oct 2005 20:32:25 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	linux-mips@linux-mips.org
Subject: Tftp problems with ARC firmware
Message-ID: <20051013193225.GA3137@linux-mips.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9221
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips
Content-Length: 637
Lines: 14

I'd like to point those who you need to use these crude workarounds:

  echo 1 > /proc/sys/net/ipv4/ip_no_pmtu_disc
  echo 4096 32767 > /proc/sys/net/ipv4/ip_local_port_range

at a new version of tftp-hpa which solves the PMTU problem by disabling it
only for the tftp client and introduces a new -R begin:end option which
allows to limit the port number range.  The changes are about to become
available in the tftp-hpa git repository at
http://www.kernel.org/pub/scm/network/tftp/tftp-hpa.git; see also
http://www.linux-mips.org/wiki/ARC#tftp-hpa.  Please send test reports to
syslinux@zytor.com and linux-mips@linux-mips.org.

  Ralf

From flo@rfc822.org Thu Oct 13 23:09:47 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 13 Oct 2005 23:10:08 +0100 (BST)
Received: from hydra.gt.owl.de ([195.71.99.218]:20105 "EHLO hydra.gt.owl.de")
	by ftp.linux-mips.org with ESMTP id S3465606AbVJMWJr (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Thu, 13 Oct 2005 23:09:47 +0100
Received: by hydra.gt.owl.de (Postfix, from userid 104)
	id EFE48199429; Fri, 14 Oct 2005 00:09:44 +0200 (CEST)
Received: by paradigm.rfc822.org (Postfix, from userid 1000)
	id 67755138014; Fri, 14 Oct 2005 00:09:36 +0200 (CEST)
Date:	Fri, 14 Oct 2005 00:09:36 +0200
From:	Florian Lohoff <flo@rfc822.org>
To:	Ralf Baechle <ralf@linux-mips.org>
Cc:	linux-mips@linux-mips.org
Subject: Re: Tftp problems with ARC firmware
Message-ID: <20051013220936.GA15668@paradigm.rfc822.org>
References: <20051013193225.GA3137@linux-mips.org>
Mime-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha1;
	protocol="application/pgp-signature"; boundary="jRHKVT23PllUwdXP"
Content-Disposition: inline
In-Reply-To: <20051013193225.GA3137@linux-mips.org>
Organization: rfc822 - pure communication
X-SpiderMe: mh-200510132349@listme.rfc822.org
User-Agent: Mutt/1.5.9i
Return-Path: <flo@rfc822.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9222
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: flo@rfc822.org
Precedence: bulk
X-list: linux-mips
Content-Length: 1578
Lines: 46


--jRHKVT23PllUwdXP
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Thu, Oct 13, 2005 at 08:32:25PM +0100, Ralf Baechle wrote:
> I'd like to point those who you need to use these crude workarounds:
>=20
>   echo 1 > /proc/sys/net/ipv4/ip_no_pmtu_disc
>   echo 4096 32767 > /proc/sys/net/ipv4/ip_local_port_range
>=20
> at a new version of tftp-hpa which solves the PMTU problem by disabling it
> only for the tftp client and introduces a new -R begin:end option which
> allows to limit the port number range.  The changes are about to become
> available in the tftp-hpa git repository at
> http://www.kernel.org/pub/scm/network/tftp/tftp-hpa.git; see also
> http://www.linux-mips.org/wiki/ARC#tftp-hpa.  Please send test reports to
> syslinux@zytor.com and linux-mips@linux-mips.org.

I made a patch against tftpd-hpa for disabling path MTU discovery - Its
in the Debian BTS:=20

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=3D316616

It should already be merged upstream. User "-F" to disable PMTUd.

Flo
--=20
Florian Lohoff                  flo@rfc822.org             +49-171-2280134
                        Heisenberg may have been here.

--jRHKVT23PllUwdXP
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: Digital signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFDTtsgUaz2rXW+gJcRAof2AJ4jhJukStNBxI0+wqfyXYw949AmDACeLnjO
nvVgEBMw4ShjPVyjiSb/dgQ=
=NWdP
-----END PGP SIGNATURE-----

--jRHKVT23PllUwdXP--

From anemo@mba.ocn.ne.jp Fri Oct 14 03:22:05 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 14 Oct 2005 03:22:23 +0100 (BST)
Received: from topsns.toshiba-tops.co.jp ([202.230.225.5]:48137 "HELO
	topsns.toshiba-tops.co.jp") by ftp.linux-mips.org with SMTP
	id S3465614AbVJNCWF (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Fri, 14 Oct 2005 03:22:05 +0100
Received: from inside-ms1.toshiba-tops.co.jp by topsns.toshiba-tops.co.jp
          via smtpd (for mail.linux-mips.org [62.254.210.162]) with SMTP; 14 Oct 2005 02:22:35 UT
Received: from topsms.toshiba-tops.co.jp (localhost.localdomain [127.0.0.1])
	by localhost.toshiba-tops.co.jp (Postfix) with ESMTP id E2E0F1FE9C;
	Fri, 14 Oct 2005 11:22:31 +0900 (JST)
Received: from srd2sd.toshiba-tops.co.jp (srd2sd.toshiba-tops.co.jp [172.17.28.2])
	by topsms.toshiba-tops.co.jp (Postfix) with ESMTP id CF6591FE9A;
	Fri, 14 Oct 2005 11:22:31 +0900 (JST)
Received: from localhost (fragile [172.17.28.65])
	by srd2sd.toshiba-tops.co.jp (8.12.10/8.12.10) with ESMTP id j9E2MUA9019109;
	Fri, 14 Oct 2005 11:22:31 +0900 (JST)
	(envelope-from anemo@mba.ocn.ne.jp)
Date:	Fri, 14 Oct 2005 11:22:30 +0900 (JST)
Message-Id: <20051014.112230.59032886.nemoto@toshiba-tops.co.jp>
To:	ralf@linux-mips.org
Cc:	linux-mips@linux-mips.org
Subject: Re: [PATCH] fix possible sleeping in atomic on setup/restore
 sigcontext
From:	Atsushi Nemoto <anemo@mba.ocn.ne.jp>
In-Reply-To: <20051013140415.GC2654@linux-mips.org>
References: <20051007.235152.75184664.anemo@mba.ocn.ne.jp>
	<20051013140415.GC2654@linux-mips.org>
X-Fingerprint: 6ACA 1623 39BD 9A94 9B1A  B746 CA77 FE94 2874 D52F
X-Pgp-Public-Key: http://wwwkeys.pgp.net/pks/lookup?op=get&search=0x2874D52F
X-Mailer: Mew version 3.3 on Emacs 21.3 / Mule 5.0 (SAKAKI)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Return-Path: <anemo@mba.ocn.ne.jp>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9223
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: anemo@mba.ocn.ne.jp
Precedence: bulk
X-list: linux-mips
Content-Length: 9918
Lines: 381

>>>>> On Thu, 13 Oct 2005 15:04:15 +0100, Ralf Baechle <ralf@linux-mips.org> said:
ralf> I think much of the 87d54649f67d8ffe0a8d8176de8c210a6c4bb4a7
ralf> preemption patch is flawed and the problem you were trying to
ralf> fix are in part just caused by it.

Well... the patch fixed some problem because preempt_disable/enable is
actually needed for lazy fpu switch, but some of the fixes was wrong
(as I wrote at that time ;-)).

Anyway, I create an another patch by rewriting
restore_fp_context/save_fp_context.  While thread.fpu.hard and
thread.fpu.soft are completely same, things are quite simple.

Description:
The setup_sigcontect/restore_sigcontext might sleep on
put_user/get_user with preemption disabled (i.e. atomic context).
Sleeping in atomic context is not allowed.  This patch fixes this
problem rewriting restore_fp_context/save_fp_context.

fp context saving path is:
BEFORE:  (thread.fpu -> ) real FPU -> sigcontext
AFTER:  (real FPU -> ) thread.fpu -> sigcontext

 arch/mips/kernel/signal-common.h    |   56 +++++++++++++++++++++------
 arch/mips/kernel/signal32.c         |   54 ++++++++++++++++++++------
 arch/mips/kernel/traps.c            |   54 --------------------------
 arch/mips/math-emu/kernel_linkage.c |   73 ------------------------------------ include/asm-mips/fpu.h              |    9 ----
 5 files changed, 86 insertions(+), 160 deletions(-)

Then we can remove all arch/mips/kernel/*_fpu.S and some (all?) SC_
symbols from asm-offset.c file.

Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>

diff --git a/arch/mips/kernel/signal-common.h b/arch/mips/kernel/signal-common.h
--- a/arch/mips/kernel/signal-common.h
+++ b/arch/mips/kernel/signal-common.h
@@ -10,6 +10,42 @@
 
 #include <linux/config.h>
 
+/*
+ * Emulator context save/restore to/from a signal context
+ * presumed to be on the user stack, and therefore accessed
+ * with appropriate macros from uaccess.h
+ */
+
+static inline int save_fp_context(struct sigcontext *sc)
+{
+	int i;
+	int err = 0;
+
+	for (i = 0; i < 32; i++) {
+		err |=
+		    __put_user(current->thread.fpu.soft.fpr[i],
+			       &sc->sc_fpregs[i]);
+	}
+	err |= __put_user(current->thread.fpu.soft.fcr31, &sc->sc_fpc_csr);
+
+	return err;
+}
+
+static inline int restore_fp_context(struct sigcontext *sc)
+{
+	int i;
+	int err = 0;
+
+	for (i = 0; i < 32; i++) {
+		err |=
+		    __get_user(current->thread.fpu.soft.fpr[i],
+			       &sc->sc_fpregs[i]);
+	}
+	err |= __get_user(current->thread.fpu.soft.fcr31, &sc->sc_fpc_csr);
+
+	return err;
+}
+
 static inline int
 setup_sigcontext(struct pt_regs *regs, struct sigcontext *sc)
 {
@@ -68,15 +104,14 @@ setup_sigcontext(struct pt_regs *regs, s
 	 * current FPU state.
 	 */
 	preempt_disable();
-
-	if (!is_fpu_owner()) {
-		own_fpu();
-		restore_fp(current);
+	if (is_fpu_owner()) {
+		/* save current context to task_struct */
+		save_fp(current);
+		/* no need to call lose_fpu here. */
 	}
-	err |= save_fp_context(sc);
-
 	preempt_enable();
 
+	err |= save_fp_context(sc);
 out:
 	return err;
 }
@@ -138,19 +173,16 @@ restore_sigcontext(struct pt_regs *regs,
 	err |= __get_user(used_math, &sc->sc_used_math);
 	conditional_used_math(used_math);
 
+	/* signal handler may have used FPU.  Give it up. */
 	preempt_disable();
+	lose_fpu();
+	preempt_enable();
 
 	if (used_math()) {
 		/* restore fpu context if we have used it before */
-		own_fpu();
 		err |= restore_fp_context(sc);
-	} else {
-		/* signal handler may have used FPU.  Give it up. */
-		lose_fpu();
 	}
 
-	preempt_enable();
-
 	return err;
 }
 
diff --git a/arch/mips/kernel/signal32.c b/arch/mips/kernel/signal32.c
--- a/arch/mips/kernel/signal32.c
+++ b/arch/mips/kernel/signal32.c
@@ -335,6 +335,40 @@ asmlinkage int sys32_sigaltstack(nabi_no
 	return ret;
 }
 
+/*
+ * This is the o32 version
+ */
+
+static inline int save_fp_context32(struct sigcontext32 *sc)
+{
+	int i;
+	int err = 0;
+
+	for (i = 0; i < 32; i+=2) {
+		err |=
+		    __put_user(current->thread.fpu.soft.fpr[i],
+			       &sc->sc_fpregs[i]);
+	}
+	err |= __put_user(current->thread.fpu.soft.fcr31, &sc->sc_fpc_csr);
+
+	return err;
+}
+
+static inline int restore_fp_context32(struct sigcontext32 *sc)
+{
+	int i;
+	int err = 0;
+
+	for (i = 0; i < 32; i+=2) {
+		err |=
+		    __get_user(current->thread.fpu.soft.fpr[i],
+			       &sc->sc_fpregs[i]);
+	}
+	err |= __get_user(current->thread.fpu.soft.fcr31, &sc->sc_fpc_csr);
+
+	return err;
+}
+
 static int restore_sigcontext32(struct pt_regs *regs, struct sigcontext32 *sc)
 {
 	u32 used_math;
@@ -376,19 +410,16 @@ static int restore_sigcontext32(struct p
 	err |= __get_user(used_math, &sc->sc_used_math);
 	conditional_used_math(used_math);
 
+	/* signal handler may have used FPU.  Give it up. */
 	preempt_disable();
+	lose_fpu();
+	preempt_enable();
 
 	if (used_math()) {
 		/* restore fpu context if we have used it before */
-		own_fpu();
 		err |= restore_fp_context32(sc);
-	} else {
-		/* signal handler may have used FPU.  Give it up. */
-		lose_fpu();
 	}
 
-	preempt_enable();
-
 	return err;
 }
 
@@ -609,15 +640,14 @@ static inline int setup_sigcontext32(str
 	 * current FPU state.
 	 */
 	preempt_disable();
-
-	if (!is_fpu_owner()) {
-		own_fpu();
-		restore_fp(current);
+	if (is_fpu_owner()) {
+		/* save current context to task_struct */
+		save_fp(current);
+		/* no need to call lose_fpu here. */
 	}
-	err |= save_fp_context32(sc);
-
 	preempt_enable();
 
+	err |= save_fp_context32(sc);
 out:
 	return err;
 }
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -1098,55 +1098,6 @@ void *set_vi_handler (int n, void *addr)
 }
 #endif
 
-/*
- * This is used by native signal handling
- */
-asmlinkage int (*save_fp_context)(struct sigcontext *sc);
-asmlinkage int (*restore_fp_context)(struct sigcontext *sc);
-
-extern asmlinkage int _save_fp_context(struct sigcontext *sc);
-extern asmlinkage int _restore_fp_context(struct sigcontext *sc);
-
-extern asmlinkage int fpu_emulator_save_context(struct sigcontext *sc);
-extern asmlinkage int fpu_emulator_restore_context(struct sigcontext *sc);
-
-static inline void signal_init(void)
-{
-	if (cpu_has_fpu) {
-		save_fp_context = _save_fp_context;
-		restore_fp_context = _restore_fp_context;
-	} else {
-		save_fp_context = fpu_emulator_save_context;
-		restore_fp_context = fpu_emulator_restore_context;
-	}
-}
-
-#ifdef CONFIG_MIPS32_COMPAT
-
-/*
- * This is used by 32-bit signal stuff on the 64-bit kernel
- */
-asmlinkage int (*save_fp_context32)(struct sigcontext32 *sc);
-asmlinkage int (*restore_fp_context32)(struct sigcontext32 *sc);
-
-extern asmlinkage int _save_fp_context32(struct sigcontext32 *sc);
-extern asmlinkage int _restore_fp_context32(struct sigcontext32 *sc);
-
-extern asmlinkage int fpu_emulator_save_context32(struct sigcontext32 *sc);
-extern asmlinkage int fpu_emulator_restore_context32(struct sigcontext32 *sc);
-
-static inline void signal32_init(void)
-{
-	if (cpu_has_fpu) {
-		save_fp_context32 = _save_fp_context32;
-		restore_fp_context32 = _restore_fp_context32;
-	} else {
-		save_fp_context32 = fpu_emulator_save_context32;
-		restore_fp_context32 = fpu_emulator_restore_context32;
-	}
-}
-#endif
-
 extern void cpu_cache_init(void);
 extern void tlb_init(void);
 
@@ -1350,10 +1301,5 @@ void __init trap_init(void)
 	else
 		memcpy((void *)(CAC_BASE + 0x080), &except_vec3_generic, 0x80);
 
-	signal_init();
-#ifdef CONFIG_MIPS32_COMPAT
-	signal32_init();
-#endif
-
 	flush_icache_range(ebase, ebase + 0x400);
 }
diff --git a/arch/mips/math-emu/kernel_linkage.c b/arch/mips/math-emu/kernel_linkage.c
--- a/arch/mips/math-emu/kernel_linkage.c
+++ b/arch/mips/math-emu/kernel_linkage.c
@@ -44,76 +44,3 @@ void fpu_emulator_init_fpu(void)
 		current->thread.fpu.soft.fpr[i] = SIGNALLING_NAN;
 	}
 }
-
-
-/*
- * Emulator context save/restore to/from a signal context
- * presumed to be on the user stack, and therefore accessed
- * with appropriate macros from uaccess.h
- */
-
-int fpu_emulator_save_context(struct sigcontext *sc)
-{
-	int i;
-	int err = 0;
-
-	for (i = 0; i < 32; i++) {
-		err |=
-		    __put_user(current->thread.fpu.soft.fpr[i],
-			       &sc->sc_fpregs[i]);
-	}
-	err |= __put_user(current->thread.fpu.soft.fcr31, &sc->sc_fpc_csr);
-
-	return err;
-}
-
-int fpu_emulator_restore_context(struct sigcontext *sc)
-{
-	int i;
-	int err = 0;
-
-	for (i = 0; i < 32; i++) {
-		err |=
-		    __get_user(current->thread.fpu.soft.fpr[i],
-			       &sc->sc_fpregs[i]);
-	}
-	err |= __get_user(current->thread.fpu.soft.fcr31, &sc->sc_fpc_csr);
-
-	return err;
-}
-
-#ifdef CONFIG_64BIT
-/*
- * This is the o32 version
- */
-
-int fpu_emulator_save_context32(struct sigcontext32 *sc)
-{
-	int i;
-	int err = 0;
-
-	for (i = 0; i < 32; i+=2) {
-		err |=
-		    __put_user(current->thread.fpu.soft.fpr[i],
-			       &sc->sc_fpregs[i]);
-	}
-	err |= __put_user(current->thread.fpu.soft.fcr31, &sc->sc_fpc_csr);
-
-	return err;
-}
-
-int fpu_emulator_restore_context32(struct sigcontext32 *sc)
-{
-	int i;
-	int err = 0;
-
-	for (i = 0; i < 32; i+=2) {
-		err |=
-		    __get_user(current->thread.fpu.soft.fpr[i],
-			       &sc->sc_fpregs[i]);
-	}
-	err |= __get_user(current->thread.fpu.soft.fcr31, &sc->sc_fpc_csr);
-
-	return err;
-}
-#endif
diff --git a/include/asm-mips/fpu.h b/include/asm-mips/fpu.h
--- a/include/asm-mips/fpu.h
+++ b/include/asm-mips/fpu.h
@@ -21,15 +21,6 @@
 #include <asm/processor.h>
 #include <asm/current.h>
 
-struct sigcontext;
-struct sigcontext32;
-
-extern asmlinkage int (*save_fp_context)(struct sigcontext *sc);
-extern asmlinkage int (*restore_fp_context)(struct sigcontext *sc);
-
-extern asmlinkage int (*save_fp_context32)(struct sigcontext32 *sc);
-extern asmlinkage int (*restore_fp_context32)(struct sigcontext32 *sc);
-
 extern void fpu_emulator_init_fpu(void);
 extern void _init_fpu(void);
 extern void _save_fp(struct task_struct *);

From ralf@linux-mips.org Fri Oct 14 11:51:18 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 14 Oct 2005 11:51:36 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:4105 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133494AbVJNKvS (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Fri, 14 Oct 2005 11:51:18 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j9EAp9iA001842;
	Fri, 14 Oct 2005 11:51:09 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j9DMtLSp006759;
	Thu, 13 Oct 2005 23:55:21 +0100
Date:	Thu, 13 Oct 2005 23:55:21 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	David Daney <ddaney@avtrex.com>, linux-mips@linux-mips.org
Subject: Re: OProfile cannot be loaded as module...
Message-ID: <20051013225520.GA3234@linux-mips.org>
References: <43470BCF.1070709@avtrex.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <43470BCF.1070709@avtrex.com>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9224
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips
Content-Length: 869
Lines: 21

On Fri, Oct 07, 2005 at 04:59:11PM -0700, David Daney wrote:

> arch/mips/oprofile/common.c defines several symbols (op_model_mipsxx and 
> op_model_rm9000) with __attribute__((weak)).  It then assumes that ELF 
> linking conventions will prevail and there will be no problems if they 
> are undefined.
> 
> The problem is if you try to load oprofile as a module.  The kernel 
> module linker evidentially does not understand weak symbols and refuses 
> to load the module because they are undefined.

Actually it contains code to handle weak symbols so this is a bit
surprising not last because STB_WEAK handling happen in the generic
module loader code and is being used by other architectures as well.

So if there's a problem with the module loader I'd prefer to solve that
instead of starting to kludge around it.

What compiler exactly are you using btw?

  Ralf

From ralf@linux-mips.org Fri Oct 14 12:11:03 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 14 Oct 2005 12:11:23 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:17684 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133494AbVJNLLD (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Fri, 14 Oct 2005 12:11:03 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j9EBAx2H003957;
	Fri, 14 Oct 2005 12:10:59 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j9EBAwAw003956;
	Fri, 14 Oct 2005 12:10:58 +0100
Date:	Fri, 14 Oct 2005 12:10:58 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	Florian Lohoff <flo@rfc822.org>
Cc:	linux-mips@linux-mips.org
Subject: Re: Tftp problems with ARC firmware
Message-ID: <20051014111058.GA2608@linux-mips.org>
References: <20051013193225.GA3137@linux-mips.org> <20051013220936.GA15668@paradigm.rfc822.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20051013220936.GA15668@paradigm.rfc822.org>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9225
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips
Content-Length: 1458
Lines: 31

On Fri, Oct 14, 2005 at 12:09:36AM +0200, Florian Lohoff wrote:

> >   echo 1 > /proc/sys/net/ipv4/ip_no_pmtu_disc
> >   echo 4096 32767 > /proc/sys/net/ipv4/ip_local_port_range
> > 
> > at a new version of tftp-hpa which solves the PMTU problem by disabling it
> > only for the tftp client and introduces a new -R begin:end option which
> > allows to limit the port number range.  The changes are about to become
> > available in the tftp-hpa git repository at
> > http://www.kernel.org/pub/scm/network/tftp/tftp-hpa.git; see also
> > http://www.linux-mips.org/wiki/ARC#tftp-hpa.  Please send test reports to
> > syslinux@zytor.com and linux-mips@linux-mips.org.
> 
> I made a patch against tftpd-hpa for disabling path MTU discovery - Its
> in the Debian BTS: 
> 
> http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=316616
> 
> It should already be merged upstream. User "-F" to disable PMTUd.

Never made it to HPA - HPA wrote the patches for these two bugs himself
yesterday when I mentioned the problem to him.  His patches are different
in the he disables PMTU discovery entirely - it's not useful for TFTP.
And your patch doesn't work around the other firmware bug which requires
restricting the port range.  We had to get rid of the currently recommended
workaround - it seriously restricts the IP stack; cripples is probably
the right expression for busy servers.

Patch rotting in the Debian bugtracking system seems to become a classic ;-)

  Ralf

From ivy.mips@gmail.com Fri Oct 14 14:31:19 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 14 Oct 2005 14:31:36 +0100 (BST)
Received: from wproxy.gmail.com ([64.233.184.194]:8375 "EHLO wproxy.gmail.com")
	by ftp.linux-mips.org with ESMTP id S8133505AbVJNNbT convert rfc822-to-8bit
	(ORCPT <rfc822;linux-mips@linux-mips.org>);
	Fri, 14 Oct 2005 14:31:19 +0100
Received: by wproxy.gmail.com with SMTP id i7so280621wra
        for <linux-mips@linux-mips.org>; Fri, 14 Oct 2005 06:31:17 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition;
        b=ciT5bu0zvXpbKzA2AG8Itgn8Yn27RcHKXpOgM5o/HH22VH6ke1NiXDbTIZiXqFn1e3F5TduzYTQzURPkMaAkG34uSrkVMh8fkBisd6VtwfSFKW/HLk0F3XTl6zQzLt8WFVVMauJI5u20FniILHwkdK2IyY5kZuOkD+ivK5RQiZs=
Received: by 10.54.89.7 with SMTP id m7mr962559wrb;
        Fri, 14 Oct 2005 06:31:17 -0700 (PDT)
Received: by 10.54.79.15 with HTTP; Fri, 14 Oct 2005 06:31:17 -0700 (PDT)
Message-ID: <8a58e1120510140631yd33f85dg3e3e9c993555726@mail.gmail.com>
Date:	Fri, 14 Oct 2005 19:01:17 +0530
From:	Ivy green <ivy.mips@gmail.com>
To:	linux-mips@linux-mips.org
Subject: Linux on BCM7038 ?.
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8BIT
Content-Disposition: inline
Return-Path: <ivy.mips@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9226
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ivy.mips@gmail.com
Precedence: bulk
X-list: linux-mips
Content-Length: 203
Lines: 11

Hi folks,

              I am very newbie to MIPS Architecure.  I would like to
use Linux on BCM7038.

              Is there any Patches already available to apply on
kernel (>= 2.4.29) ?.


Thanks
Ivy

From giometti@enneenne.com Fri Oct 14 15:16:57 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Fri, 14 Oct 2005 15:17:16 +0100 (BST)
Received: from 81-174-11-161.f5.ngi.it ([81.174.11.161]:55952 "EHLO
	zaigor.enneenne.com") by ftp.linux-mips.org with ESMTP
	id S8133505AbVJNOQ4 (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Fri, 14 Oct 2005 15:16:56 +0100
Received: from giometti by zaigor.enneenne.com with local (Exim 3.36 #1 (Debian))
	id 1EQQMS-0003LC-00
	for <linux-mips@linux-mips.org>; Fri, 14 Oct 2005 16:16:40 +0200
Date:	Fri, 14 Oct 2005 16:16:40 +0200
From:	Rodolfo Giometti <giometti@linux.it>
To:	linux-mips@linux-mips.org
Subject: about au_sleep for au1x00
Message-ID: <20051014141640.GS6808@enneenne.com>
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="sSWUSaCcagxd8grv"
Content-Disposition: inline
Organization: Programmi e soluzioni GNU/Linux
X-PGP-Key: gpg --keyserver keyserver.penguin.de --recv-keys D25A5633
User-Agent: Mutt/1.5.6+20040722i
Return-Path: <giometti@enneenne.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9227
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: giometti@linux.it
Precedence: bulk
X-list: linux-mips
Content-Length: 13090
Lines: 426


--sSWUSaCcagxd8grv
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Hello,

attached is my proposal for a new (and better? :) implementation of
au_sleep() function (patch is against vanilla MIPS 2.6.12).

My patch adds two board specific functions whose are called before and
after CPU sleeping. This can be useful to setup hardware for sleeping
and also to ask to the board which should be the wake up reason (GPIO,
TOY).

Patch also fixes data reading from files /proc/sys/pm/{sleep,freq}.

What is still obscure to me is how I can use the au_sleep() in order
to ibernate the system... or better... how I can resume form
ibarnation. In fact the system reboots correctly but it start from the
beginning! What I have to do in order to have the system restart from
ibarnation? My boot loader is u-boot 1.1.3.

Thanks in advance,

Rodolfo

-- 

GNU/Linux Solutions                  e-mail:    giometti@linux.it
Linux Device Driver                             giometti@enneenne.com
Embedded Systems                     home page: giometti.enneenne.com
UNIX programming                     phone:     +39 349 2432127

--sSWUSaCcagxd8grv
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="ausleep.patch"

Index: arch/mips/au1000/common/power.c
===================================================================
RCS file: /home/develop/cvs_private/linux-mips-exadron/arch/mips/au1000/common/power.c,v
retrieving revision 1.1.1.1
retrieving revision 1.4
diff -u -r1.1.1.1 -r1.4
--- a/arch/mips/au1000/common/power.c	2 Jul 2005 06:45:44 -0000	1.1.1.1
+++ b/arch/mips/au1000/common/power.c	14 Oct 2005 13:39:43 -0000	1.4
@@ -34,12 +34,18 @@
 #include <linux/pm.h>
 #include <linux/slab.h>
 #include <linux/sysctl.h>
+#include <linux/jiffies.h>
 
 #include <asm/string.h>
 #include <asm/uaccess.h>
 #include <asm/io.h>
 #include <asm/system.h>
+#include <asm/cacheflush.h>
 #include <asm/mach-au1x00/au1000.h>
+#include <asm/mach-au1x00/power.h>
+
+static int sleep_ticks;
+static unsigned long cpu_freq;
 
 #ifdef CONFIG_PM
 
@@ -50,7 +56,7 @@
 #  define DPRINTK(fmt, args...)
 #endif
 
-static void calibrate_delay(void);
+static void au1000_calibrate_delay(void);
 
 extern void set_au1x00_speed(unsigned int new_freq);
 extern unsigned int get_au1x00_speed(void);
@@ -89,17 +95,6 @@
 static uint	sleep_usbdev_enable;
 static uint	sleep_static_memctlr[4][3];
 
-/* Define this to cause the value you write to /proc/sys/pm/sleep to
- * set the TOY timer for the amount of time you want to sleep.
- * This is done mainly for testing, but may be useful in other cases.
- * The value is number of 32KHz ticks to sleep.
- */
-#define SLEEP_TEST_TIMEOUT 1
-#ifdef SLEEP_TEST_TIMEOUT
-static	int	sleep_ticks;
-void wakeup_counter0_set(int ticks);
-#endif
-
 static void
 save_core_regs(void)
 {
@@ -210,10 +205,23 @@
 	suspend_mode = 0;
 }
 
-int au_sleep(void)
+void wakeup_counter0_set(int ticks);
+int (*board_before_sleep)(void);
+void (*board_after_sleep)(int reason);
+
+int au_sleep(int reason, int force)
 {
+	int ticks;
 	unsigned long wakeup, flags;
-	extern	void	save_and_sleep(void);
+	int board_reason = 0;
+
+	/* We need to configure the GPIO or timer interrupts that will bring
+	 * us out of sleep, so we use the specific board wake up source
+	 * (if present) */
+	if (board_before_sleep)
+		board_reason = board_before_sleep();
+	if (!force)
+		reason = board_reason;
 
 	spin_lock_irqsave(&pm_lock,flags);
 
@@ -221,29 +229,22 @@
 
 	flush_cache_all();
 
-	/** The code below is all system dependent and we should probably
-	 ** have a function call out of here to set this up.  You need
-	 ** to configure the GPIO or timer interrupts that will bring
-	 ** you out of sleep.
-	 ** For testing, the TOY counter wakeup is useful.
-	 **/
-
-#if 0
-	au_writel(au_readl(SYS_PINSTATERD) & ~(1 << 11), SYS_PINSTATERD);
-
-	/* gpio 6 can cause a wake up event */
-	wakeup = au_readl(SYS_WAKEMSK);
-	wakeup &= ~(1 << 8);	/* turn off match20 wakeup */
-	wakeup |= 1 << 6;	/* turn on gpio 6 wakeup   */
-#else
-	/* For testing, allow match20 to wake us up.
-	*/
-#ifdef SLEEP_TEST_TIMEOUT
-	wakeup_counter0_set(sleep_ticks);
-#endif
-	wakeup = 1 << 8;	/* turn on match20 wakeup   */
-	wakeup = 0;
-#endif
+	if (reason == 0)		/* machine_halt() */
+		wakeup = 0;
+	else if (reason < 0) {		/* TOY wake up */
+		ticks = -reason*HZ;
+		wakeup_counter0_set(ticks);
+		wakeup = 1<<8;		/* turn on match20 as wake up */
+	}
+	else {				/* GPIO[0-7] wake up */
+		/* We force pin GPIO[6]/SMROMCKE as gpio6 */
+		au_writel(au_readl(SYS_PINSTATERD)&~(1<<11), SYS_PINSTATERD);
+
+		wakeup = reason&0x0ff;	/* turn on selected gpio as wake up */
+	}
+	printk("%s - reason %x force %x wakeup %x ticks %x\n",
+	       __FUNCTION__, reason, force, wakeup, ticks);
+
 	au_writel(1, SYS_WAKESRC);	/* clear cause */
 	au_sync();
 	au_writel(wakeup, SYS_WAKEMSK);
@@ -251,50 +252,50 @@
 
 	save_and_sleep();
 
-	/* after a wakeup, the cpu vectors back to 0x1fc00000 so
+	/* after a wake up, the cpu vectors back to 0x1fc00000 so
 	 * it's up to the boot code to get us back here.
 	 */
 	restore_core_regs();
+
 	spin_unlock_irqrestore(&pm_lock, flags);
+
+	/* Get wake up source */
+	reason = au_readl(SYS_WAKESRC)>>18;
+	if (reason&(1<<8))		/* Wake up thanks to TOY */
+		reason = -ticks*HZ;
+
+	/* Call specific board routine */
+	if (board_after_sleep)
+		board_after_sleep(reason);
+
 	return 0;
 }
 
-static int pm_do_sleep(ctl_table * ctl, int write, struct file *file,
-		       void *buffer, size_t * len)
+static int pm_do_sleep(ctl_table *ctl, int write, struct file *file,
+		       void __user *buffer, size_t *len, loff_t *ppos)
 {
 	int retval = 0;
-#ifdef SLEEP_TEST_TIMEOUT
-#define TMPBUFLEN2 16
-	char buf[TMPBUFLEN2], *p;
-#endif
+	int *valp = (int *) ctl->data;
 
-	if (!write) {
+	if (!write)
 		*len = 0;
-	} else {
-#ifdef SLEEP_TEST_TIMEOUT
-		if (*len > TMPBUFLEN2 - 1) {
-			return -EFAULT;
-		}
-		if (copy_from_user(buf, buffer, *len)) {
-			return -EFAULT;
-		}
-		buf[*len] = 0;
-		p = buf;
-		sleep_ticks = simple_strtoul(p, &p, 0);
-#endif
-		retval = pm_send_all(PM_SUSPEND, (void *) 2);
 
+	retval = proc_dointvec(ctl, write, file, buffer, len, ppos);
+
+	if (write) {
+		retval = pm_send_all(PM_SUSPEND, (void *) 2);
 		if (retval)
 			return retval;
 
-		au_sleep();
+		au_sleep(*valp > 0 ? -*valp : 0, 1);
+
 		retval = pm_send_all(PM_RESUME, (void *) 0);
 	}
 	return retval;
 }
 
 static int pm_do_suspend(ctl_table * ctl, int write, struct file *file,
-			 void *buffer, size_t * len)
+			 void __user *buffer, size_t * len, loff_t *ppos)
 {
 	int retval = 0;
 
@@ -313,40 +314,32 @@
 
 
 static int pm_do_freq(ctl_table * ctl, int write, struct file *file,
-		      void *buffer, size_t * len)
+		      void __user *buffer, size_t * len, loff_t *ppos)
 {
 	int retval = 0, i;
-	unsigned long val, pll;
-#define TMPBUFLEN 64
-#define MAX_CPU_FREQ 396
-	char buf[TMPBUFLEN], *p;
+	unsigned long *valp = (unsigned long *) ctl->data;
+	unsigned long pll;
 	unsigned long flags, intc0_mask, intc1_mask;
 	unsigned long old_baud_base, old_cpu_freq, baud_rate, old_clk,
 	    old_refresh;
 	unsigned long new_baud_base, new_cpu_freq, new_clk, new_refresh;
 
 	spin_lock_irqsave(&pm_lock, flags);
-	if (!write) {
+
+	if (!write)
 		*len = 0;
-	} else {
-		/* Parse the new frequency */
-		if (*len > TMPBUFLEN - 1) {
-			spin_unlock_irqrestore(&pm_lock, flags);
-			return -EFAULT;
-		}
-		if (copy_from_user(buf, buffer, *len)) {
-			spin_unlock_irqrestore(&pm_lock, flags);
-			return -EFAULT;
-		}
-		buf[*len] = 0;
-		p = buf;
-		val = simple_strtoul(p, &p, 0);
-		if (val > MAX_CPU_FREQ) {
+
+	retval = proc_dointvec(ctl, write, file, buffer, len, ppos);
+
+#define MAX_CPU_FREQ 396
+	if (write) {
+		/* Check the new frequency */
+		if (*valp > MAX_CPU_FREQ) {
 			spin_unlock_irqrestore(&pm_lock, flags);
 			return -EFAULT;
 		}
 
-		pll = val / 12;
+		pll = *valp / 12;
 		if ((pll > 33) || (pll < 7)) {	/* 396 MHz max, 84 MHz min */
 			/* revisit this for higher speed cpus */
 			spin_unlock_irqrestore(&pm_lock, flags);
@@ -408,14 +401,14 @@
 
 
 	/* We don't want _any_ interrupts other than
-	 * match20. Otherwise our calibrate_delay()
+	 * match20. Otherwise our au1000_calibrate_delay()
 	 * calculation will be off, potentially a lot.
 	 */
 	intc0_mask = save_local_and_disable(0);
 	intc1_mask = save_local_and_disable(1);
 	local_enable_irq(AU1000_TOY_MATCH2_INT);
 	spin_unlock_irqrestore(&pm_lock, flags);
-	calibrate_delay();
+	au1000_calibrate_delay();
 	restore_local_and_enable(0, intc0_mask);
 	restore_local_and_enable(1, intc1_mask);
 	return retval;
@@ -424,8 +417,8 @@
 
 static struct ctl_table pm_table[] = {
 	{ACPI_S1_SLP_TYP, "suspend", NULL, 0, 0600, NULL, &pm_do_suspend},
-	{ACPI_SLEEP, "sleep", NULL, 0, 0600, NULL, &pm_do_sleep},
-	{CTL_ACPI, "freq", NULL, 0, 0600, NULL, &pm_do_freq},
+	{ACPI_SLEEP, "sleep", &sleep_ticks, sizeof(int), 0600, NULL, &pm_do_sleep},
+	{CTL_ACPI, "freq", &cpu_freq, sizeof(int), 0600, NULL, &pm_do_freq},
 	{0}
 };
 
@@ -455,7 +448,7 @@
    better than 1% */
 #define LPS_PREC 8
 
-static void calibrate_delay(void)
+static void au1000_calibrate_delay(void)
 {
 	unsigned long ticks, loopbit;
 	int lps_precision = LPS_PREC;
Index: arch/mips/au1000/common/reset.c
===================================================================
RCS file: /home/develop/cvs_private/linux-mips-exadron/arch/mips/au1000/common/reset.c,v
retrieving revision 1.1.1.1
retrieving revision 1.3
diff -u -r1.1.1.1 -r1.3
--- a/arch/mips/au1000/common/reset.c	2 Jul 2005 06:45:44 -0000	1.1.1.1
+++ b/arch/mips/au1000/common/reset.c	14 Oct 2005 13:40:27 -0000	1.3
@@ -36,8 +36,8 @@
 #include <asm/reboot.h>
 #include <asm/system.h>
 #include <asm/mach-au1x00/au1000.h>
+#include <asm/mach-au1x00/power.h>
 
-extern int au_sleep(void);
 extern void (*flush_cache_all)(void);
 
 void au1000_restart(char *command)
@@ -176,7 +176,7 @@
 	au_writel((1 << 26) | (1 << 10), GPIO2_OUTPUT);
 #endif
 #ifdef CONFIG_PM
-	au_sleep();
+	au_sleep(0, 0);
 
 	/* should not get here */
 	printk(KERN_ERR "Unable to put cpu in sleep mode\n");
Index: include/asm-mips/mach-au1x00/power.h
===================================================================
RCS file: include/asm-mips/mach-au1x00/power.h
diff -N include/asm-mips/mach-au1x00/power.h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ b/include/asm-mips/mach-au1x00/power.h	14 Oct 2005 13:41:29 -0000	1.2
@@ -0,0 +1,61 @@
+/*
+ *
+ * BRIEF MODULE DESCRIPTION
+ *	Include file for power management of Alchemy Semiconductor's
+ *	Au1k CPU.
+ *
+ * Copyright 2005 Rodolfo Giometti <giometti@linux.it>
+ * Author: Rodolfo Giometti <giometti@linux.it>
+ *
+ *  This program is free software; you can redistribute  it and/or modify it
+ *  under  the terms of  the GNU General  Public License as published by the
+ *  Free Software Foundation;  either version 2 of the  License, or (at your
+ *  option) any later version.
+ *
+ *  THIS  SOFTWARE  IS PROVIDED   ``AS  IS'' AND   ANY  EXPRESS OR IMPLIED
+ *  WARRANTIES,   INCLUDING, BUT NOT  LIMITED  TO, THE IMPLIED WARRANTIES OF
+ *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN
+ *  NO  EVENT  SHALL   THE AUTHOR  BE    LIABLE FOR ANY   DIRECT, INDIRECT,
+ *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *  NOT LIMITED   TO, PROCUREMENT OF  SUBSTITUTE GOODS  OR SERVICES; LOSS OF
+ *  USE, DATA,  OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ *  ANY THEORY OF LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT
+ *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ *  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ *  You should have received a copy of the  GNU General Public License along
+ *  with this program; if not, write  to the Free Software Foundation, Inc.,
+ *  675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef _AU1X00_POWER_H_
+#define _AU1X00_POWER_H_
+
+/* Save CPU state and go to sleep */
+extern void save_and_sleep(void);
+
+/* Do system settings before sleeping.
+ *
+ * If "reason" 
+ *    > 0  then we use GPIO[0-7] as wakeup source according to
+ *         bits set to "1" (ex. reason==5 set up as wake up sorces
+ *         GPIOs 0 and 2).
+ *    < 0  then we use "-reason" as sleeping seconds before wakeup.
+ *    == 0 then we consider machine_halt().
+ *
+ * If "force" != 0 then the "reason" value cannot be changed by
+ * function board_before_sleep() */
+extern int au_sleep(int reason, int force);
+
+/* These functions are called by au_sleep() before, and after,
+ * sleeping mode.
+ *
+ * These functions are defaulted to NULL and can remain so.
+ *
+ * Function "board_before_sleep()" returns an interger (called "reason")
+ * and function "board_after_sleep" takes "reason" as argument. Such
+ * parameter point the cause of sleeping mode as defined for au_sleep(). */
+extern int (*board_before_sleep)(void);
+extern void (*board_after_sleep)(int reason);
+
+#endif  /* _AU1X00_POWER_H_ */

--sSWUSaCcagxd8grv--

From redhatter@gentoo.org Sat Oct 15 06:13:34 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Sat, 15 Oct 2005 06:13:53 +0100 (BST)
Received: from 202-47-55-78.adsl.gil.com.au ([202.47.55.78]:42986 "EHLO
	longlandclan.hopto.org") by ftp.linux-mips.org with ESMTP
	id S8133499AbVJOFNe (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Sat, 15 Oct 2005 06:13:34 +0100
Received: (qmail 17547 invoked from network); 15 Oct 2005 15:13:21 +1000
Received: from beast.redhatters.home (HELO ?10.0.0.251?) (10.0.0.251)
  by 192.168.5.1 with SMTP; 15 Oct 2005 15:13:21 +1000
Message-ID: <43508FF5.7030306@gentoo.org>
Date:	Sat, 15 Oct 2005 15:13:25 +1000
From:	Stuart Longland <redhatter@gentoo.org>
Organization: Gentoo Foundation
User-Agent: Mozilla Thunderbird 1.0.6 (X11/20050716)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	Ivy green <ivy.mips@gmail.com>
CC:	linux-mips@linux-mips.org
Subject: Re: Linux on BCM7038 ?.
References: <8a58e1120510140631yd33f85dg3e3e9c993555726@mail.gmail.com>
In-Reply-To: <8a58e1120510140631yd33f85dg3e3e9c993555726@mail.gmail.com>
X-Enigmail-Version: 0.91.0.0
OpenPGP: id=63264AB9;
	url=http://dev.gentoo.org/~redhatter/gpgkey.asc
Content-Type: multipart/signed; micalg=pgp-sha1;
 protocol="application/pgp-signature";
 boundary="------------enig5E6FA871DBEE477DB6DA88C7"
Return-Path: <redhatter@gentoo.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9228
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: redhatter@gentoo.org
Precedence: bulk
X-list: linux-mips
Content-Length: 1120
Lines: 34

This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enig5E6FA871DBEE477DB6DA88C7
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Ivy green wrote:
> Hi folks,
>   Is there any Patches already available to apply on
> kernel (>= 2.4.29) ?.

kernel 2.4.29 from kernel.org?? Or kernel 2.4.29 from Linux/MIPS.org?

There's a difference... a _big_ difference.
-- 
Stuart Longland (aka Redhatter)              .'''.
Gentoo Linux/MIPS Cobalt and Docs Developer  '.'` :
. . . . . . . . . . . . . . . . . . . . . .   .'.'
http://dev.gentoo.org/~redhatter             :.'

--------------enig5E6FA871DBEE477DB6DA88C7
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFDUI/4uarJ1mMmSrkRAkU/AJ9D8st5VtUpVh329IgdVRsvTzJTowCeIjR/
qHjumfXhvelRE5epR6NAVTc=
=dV4f
-----END PGP SIGNATURE-----

--------------enig5E6FA871DBEE477DB6DA88C7--

From shuveb@gmail.com Sat Oct 15 09:33:16 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Sat, 15 Oct 2005 09:33:31 +0100 (BST)
Received: from wproxy.gmail.com ([64.233.184.201]:61668 "EHLO wproxy.gmail.com")
	by ftp.linux-mips.org with ESMTP id S8133519AbVJOIdQ convert rfc822-to-8bit
	(ORCPT <rfc822;linux-mips@linux-mips.org>);
	Sat, 15 Oct 2005 09:33:16 +0100
Received: by wproxy.gmail.com with SMTP id i7so354042wra
        for <linux-mips@linux-mips.org>; Sat, 15 Oct 2005 01:33:13 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition;
        b=d6VxmD0MkbmSFQo+G829DRJvwM2T1wPJfAuZtbE3Bh26ngXZPLVbaItfQ1iHd/REGGu9oUxuMfOhELM95MeSJNSk527Ja35m7YRCm91mXqNIKPyHA47gV+8nPuYZmgEYrVIbZh2Ej9Ar5u0g/N8Dcv4WlqSqjrYGzebcR3KPbZU=
Received: by 10.54.80.8 with SMTP id d8mr1290511wrb;
        Sat, 15 Oct 2005 01:33:13 -0700 (PDT)
Received: by 10.54.132.12 with HTTP; Sat, 15 Oct 2005 01:33:13 -0700 (PDT)
Message-ID: <c24555040510150133x7d42afe6x9526b6eecc216b5f@mail.gmail.com>
Date:	Sat, 15 Oct 2005 14:03:13 +0530
From:	Shuveb Hussain <shuveb@gmail.com>
To:	linux-mips@linux-mips.org
Subject: mem_in? and mem_out? functions
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8BIT
Content-Disposition: inline
Return-Path: <shuveb@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9229
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: shuveb@gmail.com
Precedence: bulk
X-list: linux-mips
Content-Length: 797
Lines: 28

Hi,
I am compiling the source from git. There are definitions of macros in
include/asm/io.h for the following:

mem_inb
mem_outb
mem_inl
mem_outl
...
...

The issue is that the driver :
drivers/char/ipmi/  - have redeclared these macros as functions
statically, in the file - ipmi_si_intf.c

I do not know if this driver is used on MIPS at all, but it does get
into the way of proper compilation. If compilation of the IPMI driver
in any form is disabled (by default it gets compiled as a module),
then the compilation goes on smoothly.

I changed the names of these functions slightly and made other
modifications as to compile properly and now everything is OK, but I
do not know if this is the best way to do it, though it works for me
now.

What is the best solution for this issue?

--shuveb

From bprasad@CS.Arizona.EDU Sat Oct 15 10:20:07 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Sat, 15 Oct 2005 10:20:23 +0100 (BST)
Received: from optima.cs.arizona.edu ([192.12.69.5]:16652 "EHLO
	optima.cs.arizona.edu") by ftp.linux-mips.org with ESMTP
	id S8133522AbVJOJUH (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Sat, 15 Oct 2005 10:20:07 +0100
Received: from lectura.CS.Arizona.EDU (lectura.cs.arizona.edu [192.12.69.186])
	by optima.cs.arizona.edu (8.13.4/8.13.4) with ESMTP id j9F9JwTP075865
	for <linux-mips@linux-mips.org>; Sat, 15 Oct 2005 02:19:58 -0700 (MST)
	(envelope-from bprasad@CS.Arizona.EDU)
Date:	Sat, 15 Oct 2005 02:19:58 -0700 (MST)
From:	Prasad Venkata Boddupalli <bprasad@CS.Arizona.EDU>
To:	linux-mips@linux-mips.org
Subject: Reg Hardware context and Signal Handlers 
Message-ID: <Pine.GSO.4.58.0510150154450.19178@lectura.CS.Arizona.EDU>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Return-Path: <bprasad@CS.Arizona.EDU>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9230
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: bprasad@CS.Arizona.EDU
Precedence: bulk
X-list: linux-mips
Content-Length: 1676
Lines: 59

I am reading the program counter value from the hardware context passed as
the third argument to the signal handler. It doesn't seem to the same
value being set in setup_sigcontext() function in
arch/mips/kernel/signal.c.

I am using kernel version 2.6.6-rc3 and,

I printed out the PC twice, once in the kernel (signal.c)

#include <asm/ucontext.h>
setup_rt_frame(struct k_sigaction * ka, struct pt_regs *regs, ...) {
    ...

    regs->regs[ 5] = (unsigned long) &frame->rs_info;
    regs->regs[ 6] = (unsigned long) &frame->rs_uc;

    printk("SIG deliver pc=0x%llx\n",
          ((((struct ucontext *)regs->regs[6])->uc_mcontext).sc_pc));

    regs->regs[29] = (unsigned long) frame;
    ...

    force_sig(SIGSEGV, current)
}

Then I get the value 0x414830 repeatedly.

I print the same in my signal handler as


#include <asm/ucontext.h>
void dispatch_timer(int signal, siginfo_t * si, void *context) {
    ...

    printf ("pc value: 0x%llx\n",
        ((struct ucontext *)context)->uc_mcontext).sc_pc);

    ...
}

and I see a different value '0x7ff8000000000000'.

The values (addresses) of the third argument 'context' in my signal
handler is the same (as it must be) as 'regs->regs[6]' assigned just above
the print statement in setup_rt_frame().

I saw a few comments in the file sys/ucontext.h that read

/* Don't rely on this, the interface is currently messed up and may need
to be broken to be fixed.  */

So, I am not sure if those comments still hold good. I am anyway including
the header asm/ucontext.h and 'struct ucontext' seems to be different in
the two header files.

Does this problem sound familiar or am I screwing up something ?

regards,
Prasad.

From karsten@excalibur.cologne.de Sun Oct 16 19:03:31 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Sun, 16 Oct 2005 19:04:03 +0100 (BST)
Received: from natfrord.rzone.de ([81.169.145.161]:33987 "EHLO
	natfrord.rzone.de") by ftp.linux-mips.org with ESMTP
	id S8133554AbVJPSDb (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Sun, 16 Oct 2005 19:03:31 +0100
Received: from excalibur.cologne.de (cable-84-44-248-18.netcologne.de [84.44.248.18])
	by post.webmailer.de (8.13.1/8.13.1) with ESMTP id j9GI3S7C002632
	for <linux-mips@linux-mips.org>; Sun, 16 Oct 2005 20:03:28 +0200 (MEST)
Received: from karsten by excalibur.cologne.de with local (Exim 3.36 #1 (Debian))
	id 1ERCqv-0002bh-00
	for <linux-mips@linux-mips.org>; Sun, 16 Oct 2005 20:03:21 +0200
Date:	Sun, 16 Oct 2005 20:03:21 +0200
From:	Karsten Merker <karsten@excalibur.cologne.de>
To:	linux-mips@linux-mips.org
Subject: I2-R10k patchset - help needed
Message-ID: <20051016180321.GA9993@excalibur.cologne.de>
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="AhhlLboLdkugWU4S"
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
X-No-Archive: yes
User-Agent: Mutt/1.5.9i
Return-Path: <karsten@excalibur.cologne.de>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9231
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: karsten@excalibur.cologne.de
Precedence: bulk
X-list: linux-mips
Content-Length: 99716
Lines: 3090


--AhhlLboLdkugWU4S
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit

Hallo everybody,

I am trying to get the current git tree running on an I2 R10k, so
I applied Peter Fürsts patches from

http://home.alphastar.de/fuerst/download.html 

to it. As these are against 2.6.12-rc2, I got a bunch of rejects,
which I have resolved manually, but I am stuck with the patch for
include/asm-mips/stackframe.h.

I would be very grateful if somebody could take a look into this
and provide an updated patch against the current kernel sources.
Attached to this mail is both my version of Peter Fürsts
"collected.diff" (applies cleanly against current git but without
the stackframe.h-patch) as well as the original stackframe.h
patch.

Regards,
Karsten
-- 
#include <standard_disclaimer>
Nach Paragraph 28 Abs. 3 Bundesdatenschutzgesetz widerspreche ich der Nutzung
oder Uebermittlung meiner Daten fuer Werbezwecke oder fuer die Markt- oder
Meinungsforschung.

--AhhlLboLdkugWU4S
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: attachment; filename="R10k-changes-without-stackframe.h.diff"
Content-Transfer-Encoding: 8bit

diff -Nur linux-git/arch/mips/Kconfig linux-git-mit-R10k-patches/arch/mips/Kconfig
--- linux-git/arch/mips/Kconfig	2005-10-15 16:01:06.000000000 +0200
+++ linux-git-mit-R10k-patches/arch/mips/Kconfig	2005-10-16 13:21:56.000000000 +0200
@@ -527,6 +527,25 @@
 	  workstations.  To compile a Linux kernel that runs on these, say Y
 	  here.
 
+config SGI_IP28
+	bool "Support for SGI IP28 (Indigo2 R10k) (EXPERIMENTAL)"
+	depends EXPERIMENTAL
+	select ARC
+	select ARC64
+	select DMA_NONCOHERENT
+	select IRQ_CPU
+	select SWAP_IO_SPACE
+	select HW_HAS_EISA
+	select CPU_R10000
+	select XKPHYS_KERNEL
+	select BUILD_ELF64
+	select BOOT_ELF64
+	select SYS_SUPPORTS_64BIT_KERNEL
+	select SYS_SUPPORTS_BIG_ENDIAN
+      help
+        This is the SGI Indigo2 with R10000 processor.  To compile a Linux
+        kernel that runs on these, say Y here.
+
 config SGI_IP32
 	bool "Support for SGI IP32 (O2) (EXPERIMENTAL)"
 	depends on EXPERIMENTAL
@@ -942,7 +961,7 @@
 
 config ARC_CONSOLE
 	bool "ARC console support"
-	depends on SGI_IP22 || SNI_RM200_PCI
+	depends on SGI_IP22 || SNI_RM200_PCI || SGI_IP28
 
 config ARC_MEMORY
 	bool
@@ -951,7 +970,7 @@
 
 config ARC_PROMLIB
 	bool
-	depends on MACH_JAZZ || SNI_RM200_PCI || SGI_IP22 || SGI_IP32
+	depends on MACH_JAZZ || SNI_RM200_PCI || SGI_IP22 || SGI_IP28 || SGI_IP32
 	default y
 
 config ARC64
@@ -1319,6 +1338,14 @@
 	bool "Support for 64-bit physical address space"
 	depends on (CPU_R4X00 || CPU_R5000 || CPU_RM7000 || CPU_RM9000 || CPU_R10000 || CPU_SB1 || CPU_MIPS32_R1 || CPU_MIPS64_R1) && 32BIT
 
+config XKPHYS_KERNEL
+	bool "Allow kernel to run from 64-bit segments"
+	depends on MIPS64
+	help
+	  This option allows to locate the kernel in 64-bit unmapped memory
+	  space (xkphys). This is required for Octane (IP30) or Indigo2 R10k
+	  (IP28) machines.
+
 config CPU_ADVANCED
 	bool "Override CPU Options"
 	depends on 32BIT
@@ -1643,6 +1670,9 @@
 	  and the task is only allowed to execute a few safe syscalls
 	  defined by each seccomp mode.
 
+# Revision 1.145, Tue Apr 19 00:00:45 2005
+# Jun/Dec 2004	- IP28
+
 	  If unsure, say Y. Only embedded should say N here.
 
 config PM
diff -Nur linux-git/arch/mips/kernel/gdb-low.S linux-git-mit-R10k-patches/arch/mips/kernel/gdb-low.S
--- linux-git/arch/mips/kernel/gdb-low.S	2005-10-15 16:01:06.000000000 +0200
+++ linux-git-mit-R10k-patches/arch/mips/kernel/gdb-low.S	2005-10-16 13:21:56.000000000 +0200
@@ -52,7 +52,11 @@
 		/*
 		 * Called from user mode, go somewhere else.
 		 */
+#ifdef CONFIG_XKPHYS_KERNEL
+		dla	k1, saved_vectors
+#else
 		lui	k1, %hi(saved_vectors)
+#endif
 		mfc0	k0, CP0_CAUSE
 		andi	k0, k0, 0x7c
 		add	k1, k1, k0
@@ -61,7 +65,11 @@
 		nop
 1:
 		move	k0, sp
+#ifdef CONFIG_MIPS64
+		dsubu	sp, k1, GDB_FR_SIZE*2	# see comment above
+#else
 		subu	sp, k1, GDB_FR_SIZE*2	# see comment above
+#endif
 		LONG_S	k0, GDB_FR_REG29(sp)
 		LONG_S	$2, GDB_FR_REG2(sp)
 
@@ -368,3 +376,7 @@
 kgdbfault:	li	v0, -EFAULT
 		jr	ra
 		.end	kgdbfault
+/*
+ * Revision 1.17, Mon Nov 17 17:19:39 2003
+ * Wed May 12 21:21:49 2004	xkphys kernel addresses
+ */
diff -Nur linux-git/arch/mips/kernel/setup.c linux-git-mit-R10k-patches/arch/mips/kernel/setup.c
--- linux-git/arch/mips/kernel/setup.c	2005-10-15 16:01:06.000000000 +0200
+++ linux-git-mit-R10k-patches/arch/mips/kernel/setup.c	2005-10-16 13:25:04.000000000 +0200
@@ -302,7 +302,7 @@
 	 * Partially used pages are not usable - thus
 	 * we are rounding upwards.
 	 */
-	start_pfn = PFN_UP(CPHYSADDR(reserved_end));
+	start_pfn = PFN_UP(kernel_physaddr(reserved_end));
 
 #ifndef CONFIG_SGI_IP27
 	/* Find the highest page frame number we have available.  */
@@ -426,11 +426,11 @@
 		printk("Initial ramdisk at: 0x%p (%lu bytes)\n",
 		       (void *)initrd_start, initrd_size);
 
-		if (CPHYSADDR(initrd_end) > PFN_PHYS(max_low_pfn)) {
+		if (kernel_physaddr(initrd_end) > PFN_PHYS(max_low_pfn)) {
 			printk("initrd extends beyond end of memory "
 			       "(0x%0*Lx > 0x%0*Lx)\ndisabling initrd\n",
 			       sizeof(long) * 2,
-			       (unsigned long long)CPHYSADDR(initrd_end),
+			       (unsigned long long)kernel_physaddr(initrd_end),
 			       sizeof(long) * 2,
 			       (unsigned long long)PFN_PHYS(max_low_pfn));
 			initrd_start = initrd_end = 0;
@@ -438,7 +438,7 @@
 		}
 
 		if (initrd_reserve_bootmem)
-			reserve_bootmem(CPHYSADDR(initrd_start), initrd_size);
+			reserve_bootmem(kernel_physaddr(initrd_start), initrd_size);
 	}
 #endif /* CONFIG_BLK_DEV_INITRD  */
 }
@@ -452,10 +452,10 @@
 	 * The 64bit code in 32bit object format trick can't represent
 	 * 64bit wide relocations for linker script symbols.
 	 */
-	code_resource.start = CPHYSADDR(&_text);
-	code_resource.end = CPHYSADDR(&_etext) - 1;
-	data_resource.start = CPHYSADDR(&_etext);
-	data_resource.end = CPHYSADDR(&_edata) - 1;
+	code_resource.start = kernel_physaddr(&_text);
+	code_resource.end = kernel_physaddr(&_etext) - 1;
+	data_resource.start = kernel_physaddr(&_etext);
+	data_resource.end = kernel_physaddr(&_edata) - 1;
 #else
 	code_resource.start = virt_to_phys(&_text);
 	code_resource.end = virt_to_phys(&_etext) - 1;
@@ -559,3 +559,9 @@
 }
 
 __setup("nodsp", dsp_disable);
+
+/*
+ * Revision 1.179, Tue Apr 19 00:06:09 2005
+ * Apr 2004/2005 pf   - xkphys kernel addresses
+ */
+
diff -Nur linux-git/arch/mips/lib/memcpy.S linux-git-mit-R10k-patches/arch/mips/lib/memcpy.S
--- linux-git/arch/mips/lib/memcpy.S	2005-10-15 16:01:06.000000000 +0200
+++ linux-git-mit-R10k-patches/arch/mips/lib/memcpy.S	2005-10-16 13:21:56.000000000 +0200
@@ -17,6 +17,14 @@
 #include <asm/asm-offsets.h>
 #include <asm/regdef.h>
 
+#ifdef CONFIG_SGI_IP28
+/* Inhibit speculative stores to volatile (e.g.DMA) or invalid addresses. */
+# include <asm/cacheops.h>
+# define R10KCBARRIER(addr)  cache   Cache_Barrier, addr;
+#else
+# define R10KCBARRIER(addr)
+#endif
+
 #define dst a0
 #define src a1
 #define len a2
@@ -180,6 +188,7 @@
 	 */
 #define rem t8
 
+	R10KCBARRIER(0(ra)) /* hopefully inhibits speculative store prefetch */
 	/*
 	 * The "issue break"s below are very approximate.
 	 * Issue delays for dcache fills will perturb the schedule, as will
@@ -212,6 +221,7 @@
 	PREF(	1, 3*32(dst) )
 	.align	4
 1:
+	R10KCBARRIER(0(ra)) /* ra must be valid anyway */
 EXC(	LOAD	t0, UNIT(0)(src),	l_exc)
 EXC(	LOAD	t1, UNIT(1)(src),	l_exc_copy)
 EXC(	LOAD	t2, UNIT(2)(src),	l_exc_copy)
@@ -253,6 +263,7 @@
 EXC(	LOAD	t3, UNIT(3)(src),	l_exc_copy)
 	SUB	len, len, 4*NBYTES
 	ADD	src, src, 4*NBYTES
+	R10KCBARRIER(0(ra))
 EXC(	STORE	t0, UNIT(0)(dst),	s_exc_p4u)
 EXC(	STORE	t1, UNIT(1)(dst),	s_exc_p3u)
 EXC(	STORE	t2, UNIT(2)(dst),	s_exc_p2u)
@@ -266,6 +277,7 @@
 	beq	rem, len, copy_bytes
 	 nop
 1:
+	R10KCBARRIER(0(ra))
 EXC(	LOAD	t0, 0(src),		l_exc)
 	ADD	src, src, NBYTES
 	SUB	len, len, NBYTES
@@ -311,6 +323,7 @@
 EXC(	LDREST	t3, REST(0)(src),	l_exc_copy)
 	SUB	t2, t2, t1	# t2 = number of bytes copied
 	xor	match, t0, t1
+	R10KCBARRIER(0(ra))
 EXC(	STFIRST t3, FIRST(0)(dst),	s_exc)
 	beq	len, t2, done
 	 SUB	len, len, t2
@@ -331,6 +344,7 @@
  * It's OK to load FIRST(N+1) before REST(N) because the two addresses
  * are to the same unit (unless src is aligned, but it's not).
  */
+	R10KCBARRIER(0(ra))
 EXC(	LDFIRST	t0, FIRST(0)(src),	l_exc)
 EXC(	LDFIRST	t1, FIRST(1)(src),	l_exc_copy)
 	SUB     len, len, 4*NBYTES
@@ -359,6 +373,7 @@
 	beq	rem, len, copy_bytes
 	 nop
 1:
+	R10KCBARRIER(0(ra))
 EXC(	LDFIRST t0, FIRST(0)(src),	l_exc)
 EXC(	LDREST	t0, REST(0)(src),	l_exc_copy)
 	ADD	src, src, NBYTES
@@ -372,6 +387,7 @@
 	 nop
 copy_bytes:
 	/* 0 < len < NBYTES  */
+	R10KCBARRIER(0(ra))
 #define COPY_BYTE(N)			\
 EXC(	lb	t0, N(src), l_exc);	\
 	SUB	len, len, 1;		\
@@ -484,6 +500,7 @@
 	ADD	a1, a2				# src = src + len
 
 r_end_bytes:
+	R10KCBARRIER(0(ra))
 	lb	t0, -1(a1)
 	SUB	a2, a2, 0x1
 	sb	t0, -1(a0)
@@ -496,6 +513,7 @@
 	 move	a2, zero
 
 r_end_bytes_up:
+	R10KCBARRIER(0(ra))
 	lb	t0, (a1)
 	SUB	a2, a2, 0x1
 	sb	t0, (a0)
@@ -506,3 +524,7 @@
 	jr	ra
 	 move	a2, zero
 	END(__rmemcpy)
+/*
+ * Revision 1.18, Sat Jul 26 12:00:12 2003
+ * Sat Aug  7 01:11:52 2004	pf	- r10k cache barrier
+ */
diff -Nur linux-git/arch/mips/lib/strncpy_user.S linux-git-mit-R10k-patches/arch/mips/lib/strncpy_user.S
--- linux-git/arch/mips/lib/strncpy_user.S	2005-10-15 16:01:06.000000000 +0200
+++ linux-git-mit-R10k-patches/arch/mips/lib/strncpy_user.S	2005-10-16 13:30:49.000000000 +0200
@@ -5,11 +5,20 @@
  *
  * Copyright (c) 1996, 1999 by Ralf Baechle
  */
+#include <linux/config.h>
 #include <linux/errno.h>
 #include <asm/asm.h>
 #include <asm/asm-offsets.h>
 #include <asm/regdef.h>
 
+#ifdef CONFIG_SGI_IP28
+/* Inhibit speculative stores to volatile (e.g.DMA) or invalid addresses. */
+# include <asm/cacheops.h>
+# define R10KCBARRIER(addr)  cache   Cache_Barrier, addr;
+#else
+# define R10KCBARRIER(addr)
+#endif
+
 #define EX(insn,reg,addr,handler)			\
 9:	insn	reg, addr;				\
 	.section __ex_table,"a";			\
@@ -38,6 +47,7 @@
 	.set		noreorder
 1:	EX(lbu, t0, (v1), fault)
 	PTR_ADDIU	v1, 1
+	R10KCBARRIER(0(ra))
 	beqz		t0, 2f
 	 sb		t0, (a0)
 	PTR_ADDIU	v0, 1
@@ -56,3 +66,7 @@
 	.section	__ex_table,"a"
 	PTR		1b, fault
 	.previous
+/*
+ * Revision 1.9, Wed Nov 19 14:03:13 2003
+ * Wed Aug 11 02:21:01 2004	pf	- r10k cache barrier
+ */
diff -Nur linux-git/arch/mips/lib-64/memset.S linux-git-mit-R10k-patches/arch/mips/lib-64/memset.S
--- linux-git/arch/mips/lib-64/memset.S	2005-10-15 16:01:06.000000000 +0200
+++ linux-git-mit-R10k-patches/arch/mips/lib-64/memset.S	2005-10-16 13:29:04.000000000 +0200
@@ -6,10 +6,19 @@
  * Copyright (C) 1998, 1999, 2000 by Ralf Baechle
  * Copyright (C) 1999, 2000 Silicon Graphics, Inc.
  */
+#include <linux/config.h>
 #include <asm/asm.h>
 #include <asm/asm-offsets.h>
 #include <asm/regdef.h>
 
+#ifdef CONFIG_SGI_IP28
+/* Inhibit speculative stores to volatile (e.g.DMA) or invalid addresses. */
+# include <asm/cacheops.h>
+# define R10KCBARRIER(addr)  cache   Cache_Barrier, addr;
+#else
+# define R10KCBARRIER(addr)
+#endif
+
 #define EX(insn,reg,addr,handler)			\
 9:	insn	reg, addr;				\
 	.section __ex_table,"a"; 			\
@@ -57,6 +66,7 @@
 	beqz		t0, 1f
 	 PTR_SUBU	t0, LONGSIZE		/* alignment in bytes */
 
+	R10KCBARRIER(0(ra))
 #ifdef __MIPSEB__
 	EX(sdl, a1, (a0), first_fixup)		/* make dword aligned */
 #endif
@@ -74,11 +84,13 @@
 	PTR_ADDU	t1, a0			/* end address */
 	.set		reorder
 1:	PTR_ADDIU	a0, 64
+	R10KCBARRIER(0(ra))
 	f_fill64 a0, -64, a1, fwd_fixup
 	bne		t1, a0, 1b
 	.set		noreorder
 
 memset_partial:
+	R10KCBARRIER(0(ra))
 	PTR_LA		t1, 2f			/* where to start */
 	.set		noat
 	dsrl		AT, t0, 1
@@ -96,6 +108,7 @@
 
 	beqz		a2, 1f
 	 PTR_ADDU	a0, a2			/* What's left */
+	R10KCBARRIER(0(ra))
 #ifdef __MIPSEB__
 	EX(sdr, a1, -1(a0), last_fixup)
 #endif
@@ -110,6 +123,7 @@
 	 PTR_ADDU	t1, a0, a2
 
 1:	PTR_ADDIU	a0, 1			/* fill bytewise */
+	R10KCBARRIER(0(ra))
 	bne		t1, a0, 1b
 	 sb		a1, -1(a0)
 
@@ -140,3 +154,7 @@
 last_fixup:
 	jr		ra
 	 andi		v1, a2, LONGMASK
+/*
+ * Revision 1.1, Mon Jul 21 00:11:39 2003
+ * Wed Aug 11 01:52:59 2004	pf	- r10k cache barrier
+ */
diff -Nur linux-git/arch/mips/Makefile linux-git-mit-R10k-patches/arch/mips/Makefile
--- linux-git/arch/mips/Makefile	2005-10-15 16:01:06.000000000 +0200
+++ linux-git-mit-R10k-patches/arch/mips/Makefile	2005-10-16 13:21:56.000000000 +0200
@@ -628,6 +628,19 @@
 endif
 
 #
+# SGI IP28 (Indigo2 R10k)
+#
+# Set the load address to >= 0xa800000020080000 if you want to leave space for
+# symmon, 0xa800000020004000 for production kernels ?  Note that the value must
+# be 16kb aligned or the handling of the current variable will break.
+# Simplified: what IP22 does at 128MB+ in ksegN, IP28 does at 512MB+ in xkphys
+#
+#core-$(CONFIG_SGI_IP28)		+= arch/mips/sgi-ip22/ arch/mips/arc/arc_con.o
+core-$(CONFIG_SGI_IP28)		+= arch/mips/sgi-ip22/
+cflags-$(CONFIG_SGI_IP28)	+= -mip28-cache-barrier -Iinclude/asm-mips/mach-ip28
+load-$(CONFIG_SGI_IP28)		+= 0xa800000020004000
+
+#
 # SGI-IP32 (O2)
 #
 # Set the load address to >= 80069000 if you want to leave space for symmon,
@@ -814,3 +827,6 @@
 CLEAN_FILES += vmlinux.32 \
 	       vmlinux.64 \
 	       vmlinux.ecoff
+
+# Revision 1.193, Tue Apr 19 00:00:49 2005
+# Jun/Dec 2004	- IP28
diff -Nur linux-git/arch/mips/mm/c-r4k.c linux-git-mit-R10k-patches/arch/mips/mm/c-r4k.c
--- linux-git/arch/mips/mm/c-r4k.c	2005-10-15 16:01:07.000000000 +0200
+++ linux-git-mit-R10k-patches/arch/mips/mm/c-r4k.c	2005-10-16 13:21:56.000000000 +0200
@@ -712,6 +712,27 @@
 
 	bc_inv(addr, size);
 }
+
+#ifdef CONFIG_CPU_R10000
+static void r10k_dma_cache_inv(unsigned long addr, unsigned long size)
+{
+	unsigned long sc_lsize = current_cpu_data.scache.linesz;
+	unsigned long end, a;
+
+	/* Catch bad driver code */
+	BUG_ON(size == 0);
+	//BUG_ON(!cpu_has_subset_pcaches);
+
+	a = addr & ~(sc_lsize - 1);
+	end = (addr + size - 1) & ~(sc_lsize - 1);
+	while (1) {
+		invalidate_scache_line(a);	/* Hit_Invalidate_SD/S */
+		if (a == end)
+			break;
+		a += sc_lsize;
+	}
+}
+#endif /* CONFIG_CPU_R10000 */
 #endif /* CONFIG_DMA_NONCOHERENT */
 
 /*
@@ -1269,7 +1290,16 @@
 #ifdef CONFIG_DMA_NONCOHERENT
 	_dma_cache_wback_inv	= r4k_dma_cache_wback_inv;
 	_dma_cache_wback	= r4k_dma_cache_wback_inv;
-	_dma_cache_inv		= r4k_dma_cache_inv;
+	switch (current_cpu_data.cputype) {
+#ifdef CONFIG_CPU_R10000
+	case CPU_R10000:
+	case CPU_R12000:
+		_dma_cache_inv	= r10k_dma_cache_inv;
+		break;
+#endif
+	default:
+		_dma_cache_inv	= r4k_dma_cache_inv;
+	}
 #endif
 
 	build_clear_page();
@@ -1277,3 +1307,7 @@
 	local_r4k___flush_cache_all(NULL);
 	coherency_setup();
 }
+/*
+ * Revision 1.107, Tue Apr 19 00:06:40 2005
+ * Sat Apr  9 00:06:16 2005	pf - r10k_dma_cache_inv (really dma invalidate)
+ */
diff -Nur linux-git/arch/mips/mm/init.c linux-git-mit-R10k-patches/arch/mips/mm/init.c
--- linux-git/arch/mips/mm/init.c	2005-10-15 16:01:07.000000000 +0200
+++ linux-git-mit-R10k-patches/arch/mips/mm/init.c	2005-10-16 13:33:09.000000000 +0200
@@ -225,6 +225,7 @@
 			if (PageReserved(mem_map+tmp))
 				reservedpages++;
 		}
+	num_physpages = ram;
 
 #ifdef CONFIG_HIGHMEM
 	for (tmp = highstart_pfn; tmp < highend_pfn; tmp++) {
@@ -241,6 +242,7 @@
 		set_page_count(page, 1);
 		__free_page(page);
 		totalhigh_pages++;
+		++num_physpages;
 	}
 	totalram_pages += totalhigh_pages;
 #endif
@@ -266,8 +268,8 @@
 {
 #ifdef CONFIG_64BIT
 	/* Switch from KSEG0 to XKPHYS addresses */
-	start = (unsigned long)phys_to_virt(CPHYSADDR(start));
-	end = (unsigned long)phys_to_virt(CPHYSADDR(end));
+	start = (unsigned long)phys_to_virt(kernel_physaddr(start));
+	end = (unsigned long)phys_to_virt(kernel_physaddr(end));
 #endif
 	if (start < end)
 		printk(KERN_INFO "Freeing initrd memory: %ldk freed\n",
@@ -293,7 +295,7 @@
 	addr = (unsigned long) &__init_begin;
 	while (addr < (unsigned long) &__init_end) {
 #ifdef CONFIG_64BIT
-		page = PAGE_OFFSET | CPHYSADDR(addr);
+		page = PAGE_OFFSET | kernel_physaddr(addr);
 #else
 		page = addr;
 #endif
@@ -307,3 +309,7 @@
 	printk(KERN_INFO "Freeing unused kernel memory: %ldk freed\n",
 	       freed >> 10);
 }
+/*
+ * Revision 1.75, Tue Apr 19 00:06:47 2005
+ * Jun 2004 pf	- XKPHYS
+ */
diff -Nur linux-git/arch/mips/sgi-ip22/ip22-mc.c linux-git-mit-R10k-patches/arch/mips/sgi-ip22/ip22-mc.c
--- linux-git/arch/mips/sgi-ip22/ip22-mc.c	2005-10-15 16:01:07.000000000 +0200
+++ linux-git-mit-R10k-patches/arch/mips/sgi-ip22/ip22-mc.c	2005-10-16 13:21:56.000000000 +0200
@@ -4,6 +4,7 @@
  * Copyright (C) 1996 David S. Miller (dm@engr.sgi.com)
  * Copyright (C) 1999 Andrew R. Baker (andrewb@uab.edu) - Indigo2 changes
  * Copyright (C) 2003 Ladislav Michl  (ladis@linux-mips.org)
+ * Copyright (C) 2004 Peter Fuerst    (pf@net.alphadv.de) - IP28
  */
 
 #include <linux/init.h>
@@ -16,6 +17,8 @@
 #include <asm/sgi/mc.h>
 #include <asm/sgi/hpc3.h>
 #include <asm/sgi/ip22.h>
+#include <asm/system.h>
+#include <asm/mipsregs.h>
 
 struct sgimc_regs *sgimc;
 
@@ -112,6 +115,10 @@
 	sgimc = (struct sgimc_regs *)
 		ioremap(SGIMC_BASE, sizeof(struct sgimc_regs));
 
+#ifdef CONFIG_SGI_IP28
+	printk(KERN_INFO "Silicon Graphics Indigo2 R10k (IP28)"
+	       " support: (c) 2004 peter fuerst.\n");
+#endif
 	printk(KERN_INFO "MC: SGI memory controller Revision %d\n",
 	       (int) sgimc->systemid & SGIMC_SYSID_MASKREV);
 
@@ -138,8 +145,21 @@
 	 *         zero.
 	 */
 	tmp = sgimc->cpuctrl0;
-	tmp |= (SGIMC_CCTRL0_EPERRGIO | SGIMC_CCTRL0_EPERRMEM |
-		SGIMC_CCTRL0_R4KNOCHKPARR);
+	tmp |= SGIMC_CCTRL0_R4KNOCHKPARR;
+#ifdef CONFIG_SGI_IP28
+	/* IP28 prom left us cpuctrl0 set to 3d802412:
+	 *	SGIMC_CCTRL0_GIOBTOB, SGIMC_CCTRL0_R4KNOCHKPARR,
+	 *	SGIMC_CCTRL0_GFXRESET, SGIMC_CCTRL0_EREFRESH, 31800002
+	 * FIXME:
+	 * We do not attempt to override IP28-prom's parity checking,
+	 * since SGIMC_CCTRL0_EPERRGIO will trigger a CPU parity error
+	 * (IP[6]) on reading sgioc->sysid below, while ..EPERRMEM will
+	 * trigger the same somewhere in prom-code (ffffffff9fc431cc)
+	 * when ArcGetEnvironmentVariable() is called  :-(
+	 */
+#else
+	tmp |= (SGIMC_CCTRL0_EPERRGIO | SGIMC_CCTRL0_EPERRMEM);
+#endif
 	sgimc->cpuctrl0 = tmp;
 
 	/* Step 3: Setup the MC write buffer depth, this is controlled
@@ -147,7 +167,14 @@
 	 */
 	tmp = sgimc->cpuctrl1;
 	tmp &= ~0xf;
+#ifdef CONFIG_SGI_IP28
+	/* IP28 prom left us cpuctrl1 set to 00000016:
+	 *	SGIMC_CCTRL1_EGIOTIMEO | 00000006
+	 */
+	tmp |= 0xd; /* ? 0x6:0xd */
+#else
 	tmp |= 0xd;
+#endif
 	sgimc->cpuctrl1 = tmp;
 
 	/* Step 4: Initialize the RPSS divider register to run as fast
@@ -164,7 +191,12 @@
 	 *         registers value increases at each 'tick'. Thus,
 	 *         for IP22 we get INCREMENT=1, DIVIDER=1 == 0x101
 	 */
+#ifdef CONFIG_SGI_IP28
+	/* IP28 prom left us divider set to 00000104 */
+	sgimc->divider = 0x101; /* ? 0x104:0x101 */
+#else
 	sgimc->divider = 0x101;
+#endif
 
 	/* Step 5: Initialize GIO64 arbitrator configuration register.
 	 *
@@ -177,6 +209,20 @@
 	tmp = SGIMC_GIOPAR_HPC64;	/* All 1st HPC's interface at 64bits */
 	tmp |= SGIMC_GIOPAR_ONEBUS;	/* Only one physical GIO bus exists */
 
+#ifdef CONFIG_SGI_IP28
+	/* IP28 prom left us giopar set to 0000ce23:
+	 *	SGIMC_GIOPAR_PLINEEXP0, SGIMC_GIOPAR_PLINEEXP1,
+	 *	SGIMC_GIOPAR_MASTERGFX, SGIMC_GIOPAR_MASTEREISA,
+	 *	SGIMC_GIOPAR_ONEBUS, SGIMC_GIOPAR_GFX64,
+	 *	SGIMC_GIOPAR_HPC264, SGIMC_GIOPAR_HPC64
+	 */
+	tmp |= SGIMC_GIOPAR_HPC264;	/* 2nd HPC at 64bits */
+	tmp |= SGIMC_GIOPAR_PLINEEXP0;	/* exp0 pipelines */
+	tmp |= SGIMC_GIOPAR_PLINEEXP1;	/* exp1 pipelines */
+	tmp |= SGIMC_GIOPAR_MASTERGFX;	/* GFX can act as a bus master */
+	tmp |= SGIMC_GIOPAR_MASTEREISA;	/* EISA bus can act as bus master */
+	tmp |= SGIMC_GIOPAR_GFX64;	/* GFX talks to GIO using 64-bits */
+#else
 	if (ip22_is_fullhouse()) {
 		/* Fullhouse specific settings. */
 		if (SGIOC_SYSID_BOARDREV(sgioc->sysid) < 2) {
@@ -196,9 +242,14 @@
 		tmp |= SGIMC_GIOPAR_EISA64;	/* MC talks to EISA at 64bits */
 		tmp |= SGIMC_GIOPAR_MASTEREISA;	/* EISA bus can act as master */
 	}
+#endif
 	sgimc->giopar = tmp;	/* poof */
 
+	printk(KERN_INFO "MC: Boardrev. %d, Chiprev. %d\n",
+	       SGIOC_SYSID_BOARDREV(sgioc->sysid),
+	       SGIOC_SYSID_CHIPREV(sgioc->sysid));
 	probe_memory();
+	ip2628_return_ucmem(0); /* see below. */
 }
 
 void __init prom_meminit(void) {}
@@ -206,3 +257,99 @@
 {
 	return 0;
 }
+
+#if defined(CONFIG_SGI_IP28) || defined(CONFIG_SGI_IP26)
+/*
+ * Handling uncached writes on IP26/IP28, see IRIX man-page ip26_ucmem(D3)
+ * and Device Driver Programmer's Guide (007-0911-210), Chapter I.1.
+ */
+
+static inline int _r10k_real_sync ( volatile struct sgimc_regs *sgimc )
+{
+	/* See MIPS R10000 User's Manual (SGI 007-2490-001), Chapter 4.5 */
+	int dummy = sgimc->cstat;
+	__asm__ __volatile__ ("sync");
+	return dummy;
+}
+
+static unsigned long
+ip28_set_ucmem ( volatile struct sgimc_regs *sgimc, unsigned short enable )
+{	/*
+	 * Reading `modereg' only provides random values, so we start with
+	 * guessing (from WR_COL), which state the machine is initially in
+	 * and do our own bookkeeping from then on.
+	 */
+	const unsigned long modereg = PHYS_TO_XKSEG_UNCACHED(0x60000000);
+	static unsigned oldstate = -1;
+	unsigned long flags;
+	unsigned tmp;
+	spinlock_t lock;
+	u32 mconfig1, cmacc, oldcmacc;
+
+	if (enable == oldstate)
+		return (long)enable;
+
+	/* This has to be done as early as possible ! */
+	spin_lock_irqsave(&lock, flags);
+
+	oldcmacc = sgimc->cmacc;
+	cmacc = (enable ? 6:4) | (oldcmacc & ~0xf);
+
+	/* increase WR_COL before (if at all) */
+	sgimc->cmacc = cmacc | 7;
+
+	/* enable memory bank 3 at 0x60000000 */
+	mconfig1 = sgimc->mconfig1;
+	sgimc->mconfig1 = mconfig1 & 0xffff0000 | 0x2060;
+	_r10k_real_sync(sgimc);
+
+	/* set mode to "slow" or "normal" */
+	*(volatile unsigned long*)modereg = enable ? 0x10000:0;
+	_r10k_real_sync(sgimc);
+
+	/* restore memory bank configuration */
+	sgimc->mconfig1 = mconfig1;
+
+	/* decrease WR_COL only after */
+	sgimc->cmacc = cmacc;
+	_r10k_real_sync(sgimc);
+
+	if (-1 == oldstate)
+		oldstate = (oldcmacc & 0xf) > 4;
+
+	tmp = oldstate;
+	oldstate = enable;
+	_r10k_real_sync(sgimc);
+
+	spin_unlock_irqrestore(&lock, flags);
+	return tmp;
+}
+#endif
+
+unsigned long ip2628_enable_ucmem (void)
+{
+#if defined(CONFIG_SGI_IP28) || defined(CONFIG_SGI_IP26)
+	if (!sgimc)
+		sgimc = (struct sgimc_regs *)
+				ioremap(SGIMC_BASE, sizeof(struct sgimc_regs));
+	return ip28_set_ucmem(sgimc,1);
+#else
+	return 0;
+#endif
+}
+
+void ip2628_return_ucmem ( unsigned long oldstate )
+{
+#if defined(CONFIG_SGI_IP28) || defined(CONFIG_SGI_IP26)
+	if (!sgimc)
+		sgimc = (struct sgimc_regs *)
+				ioremap(SGIMC_BASE, sizeof(struct sgimc_regs));
+	ip28_set_ucmem(sgimc,!!oldstate);
+#else
+	(void)oldstate;
+#endif
+}
+/*
+ * Revision 1.12, Tue Nov 18 05:15:20 2003
+ * Jun 2004/2005 pf	- IP28
+ */
diff -Nur linux-git/arch/mips/sgi-ip22/ip22-setup.c linux-git-mit-R10k-patches/arch/mips/sgi-ip22/ip22-setup.c
--- linux-git/arch/mips/sgi-ip22/ip22-setup.c	2005-10-15 16:01:07.000000000 +0200
+++ linux-git-mit-R10k-patches/arch/mips/sgi-ip22/ip22-setup.c	2005-10-16 13:21:56.000000000 +0200
@@ -119,6 +119,34 @@
 	}
 	}
 #endif
+#if defined(CONFIG_FB_IMPACT) || defined(CONFIG_SGI_IP28)
+	{
+		/* Get graphics info before it is overwritten...
+		 * E.g. @ 9000000020f02f78: ffffffff9fc6d770,900000001f000000
+		 */
+		ULONG* (*__vec)(void) = (typeof(__vec))
+#ifdef CONFIG_ARC64
+			((ULONG*)PROMBLOCK->pvector)[8];
+#else
+			(long) ((int*)PROMBLOCK->pvector)[8];
+#endif
+		ULONG *gfxinfo = (*__vec)();
+		ULONG a = gfxinfo[1];
+
+		if ((a & 0xffffffff80000000L) == 0xffffffff80000000L)
+			sgi_gfxaddr = a & (6L<<28) ? 0:CPHYSADDR(a); /* CKSEG[01] */
+		else if ((a & (1L<<63)) && (a & 0xb80000001fffffffL) == a)
+			sgi_gfxaddr = XPHYSADDR(a); /* lower 512MB of XKPHYS */
+		else /* rubbish... */
+			sgi_gfxaddr = 0;
+		if (sgi_gfxaddr < 0x1f000000)
+			sgi_gfxaddr = 0;
+
+		printk(KERN_DEBUG "ARCS gfx info @ %08lx: %08lx,%08lx\n",
+				gfxinfo, gfxinfo[0], gfxinfo[1]);
+		printk(KERN_INFO "SGI graphics system @ 0x%08lx\n", sgi_gfxaddr);
+	}
+#endif
 
 #if defined(CONFIG_VT) && defined(CONFIG_SGI_NEWPORT_CONSOLE)
 	{
diff -Nur linux-git/arch/mips/sgi-ip22/ip28-berr.c linux-git-mit-R10k-patches/arch/mips/sgi-ip22/ip28-berr.c
--- linux-git/arch/mips/sgi-ip22/ip28-berr.c	1970-01-01 01:00:00.000000000 +0100
+++ linux-git-mit-R10k-patches/arch/mips/sgi-ip22/ip28-berr.c	2005-10-16 13:22:04.000000000 +0200
@@ -0,0 +1,600 @@
+/*
+ * ip28-berr.c: Bus error handling.
+ *
+ * Copyright (C) 2002, 2003 Ladislav Michl (ladis@linux-mips.org)
+ * Copyright (C) 2005 Peter Fuerst (pf@net.alphadv.de) - IP28
+ */
+
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/sched.h>
+
+#include <asm/addrspace.h>
+#include <asm/system.h>
+#include <asm/traps.h>
+#include <asm/branch.h>
+#include <asm/sgi/mc.h>
+#include <asm/sgi/hpc3.h>
+#include <asm/sgi/ioc.h>
+#include <asm/sgi/ip22.h>
+#include <asm/r4kcache.h>
+#include <asm/uaccess.h>
+
+static unsigned int cpu_err_stat;	/* Status reg for CPU */
+static unsigned int gio_err_stat;	/* Status reg for GIO */
+static unsigned int cpu_err_addr;	/* Error address reg for CPU */
+static unsigned int gio_err_addr;	/* Error address reg for GIO */
+static unsigned int extio_stat;
+static unsigned int hpc3_berr_stat;	/* Bus error interrupt status */
+
+struct hpc3_stat {
+	unsigned int addr;
+	unsigned int ctrl;
+	unsigned int cbp;
+	unsigned int ndptr;
+};
+
+static struct {
+	struct hpc3_stat pbdma[8];
+	struct hpc3_stat scsi[2];
+	struct hpc3_stat ethrx, ethtx;
+} hpc3;
+
+static struct {
+	unsigned long err_addr;
+	struct { unsigned lo; unsigned hi; } /* Cache tag High/Low */
+		tags[1][2], tagd[4][2], tagi[4][2]; /* Way 0/1 */
+} cache_tags;
+
+static inline void save_cache_tags(unsigned busaddr)
+{
+	unsigned long addr = CAC_BASE | busaddr;
+	unsigned i;
+	cache_tags.err_addr = addr;
+
+	/*
+	 * Starting with a bus-address, save secondary cache (indexed by
+	 * PA[23..18:7..6]) tags first.
+	 */
+	addr &= ~1L;
+	#define tag cache_tags.tags[0]
+	cache_op(Index_Load_Tag_S, addr);
+	tag[0].lo = read_c0_taglo();	/* PA[35:18], VA[13:12] */
+	tag[0].hi = read_c0_taghi();	/* PA[39:36] */
+	cache_op(Index_Load_Tag_S, addr | 1L);
+	tag[1].lo = read_c0_taglo();	/* PA[35:18], VA[13:12] */
+	tag[1].hi = read_c0_taghi();	/* PA[39:36] */
+	#undef tag
+
+	/*
+	 * Save all primary data cache (indexed by VA[13:5]) tags which
+	 * might fit to this bus-address, knowing that VA[11:0] == PA[11:0].
+	 * Saving all tags and evaluating them later is easier and safer
+	 * than relying on VA[13:12] from the secondary cache tags to pick
+	 * matching primary tags here already.
+	 */
+	addr &= (0xffL << 56) | ((1 << 12) - 1);
+	#define tag cache_tags.tagd[i]
+	for (i = 0; i < 4; ++i, addr += (1 << 12))
+	{	cache_op(Index_Load_Tag_D, addr);
+		tag[0].lo = read_c0_taglo();	/* PA[35:12] */
+		tag[0].hi = read_c0_taghi();	/* PA[39:36] */
+		cache_op(Index_Load_Tag_D, addr | 1L);
+		tag[1].lo = read_c0_taglo();	/* PA[35:12] */
+		tag[1].hi = read_c0_taghi();	/* PA[39:36] */
+	}
+	#undef tag
+
+	/*
+	 * Save primary instruction cache (indexed by VA[13:6]) tags
+	 * the same way.
+	 */
+	addr &= (0xffL << 56) | ((1 << 12) - 1);
+	#define tag cache_tags.tagi[i]
+	for (i = 0; i < 4; ++i, addr += (1 << 12))
+	{	cache_op(Index_Load_Tag_I, addr);
+		tag[0].lo = read_c0_taglo();	/* PA[35:12] */
+		tag[0].hi = read_c0_taghi();	/* PA[39:36] */
+		cache_op(Index_Load_Tag_I, addr | 1L);
+		tag[1].lo = read_c0_taglo();	/* PA[35:12] */
+		tag[1].hi = read_c0_taghi();	/* PA[39:36] */
+	}
+	#undef tag
+}
+
+#define GIO_ERRMASK	0xff00
+#define CPU_ERRMASK	0x3f00
+
+static void save_and_clear_buserr(void)
+{
+	unsigned i;
+
+	/* save status registers */
+	cpu_err_addr = sgimc->cerr;
+	cpu_err_stat = sgimc->cstat;
+	gio_err_addr = sgimc->gerr;
+	gio_err_stat = sgimc->gstat;
+	//BUG_ON(!ip22_is_fullhouse());
+	extio_stat = sgioc->extio;
+	hpc3_berr_stat = hpc3c0->bestat;
+
+	hpc3.scsi[0].addr  = &hpc3c0->scsi_chan0;
+	hpc3.scsi[0].ctrl  = hpc3c0->scsi_chan0.ctrl; /* HPC3_SCTRL_ACTIVE ? */
+	hpc3.scsi[0].cbp   = hpc3c0->scsi_chan0.cbptr;
+	hpc3.scsi[0].ndptr = hpc3c0->scsi_chan0.ndptr;
+
+	hpc3.scsi[1].addr  = &hpc3c0->scsi_chan1;
+	hpc3.scsi[1].ctrl  = hpc3c0->scsi_chan1.ctrl; /* HPC3_SCTRL_ACTIVE ? */
+	hpc3.scsi[1].cbp   = hpc3c0->scsi_chan1.cbptr;
+	hpc3.scsi[1].ndptr = hpc3c0->scsi_chan1.ndptr;
+
+	hpc3.ethrx.addr  = &hpc3c0->ethregs.rx_cbptr;
+	hpc3.ethrx.ctrl  = hpc3c0->ethregs.rx_ctrl; /* HPC3_ERXCTRL_ACTIVE ? */
+	hpc3.ethrx.cbp   = hpc3c0->ethregs.rx_cbptr;
+	hpc3.ethrx.ndptr = hpc3c0->ethregs.rx_ndptr;
+
+	hpc3.ethtx.addr  = &hpc3c0->ethregs.tx_cbptr;
+	hpc3.ethtx.ctrl  = hpc3c0->ethregs.tx_ctrl; /* HPC3_ETXCTRL_ACTIVE ? */
+	hpc3.ethtx.cbp   = hpc3c0->ethregs.tx_cbptr;
+	hpc3.ethtx.ndptr = hpc3c0->ethregs.tx_ndptr;
+
+	for (i = 0; i < 8; ++i) {
+		/* HPC3_PDMACTRL_ISACT ? */
+		hpc3.pbdma[i].addr  = &hpc3c0->pbdma[i];
+		hpc3.pbdma[i].ctrl  = hpc3c0->pbdma[i].pbdma_ctrl;
+		hpc3.pbdma[i].cbp   = hpc3c0->pbdma[i].pbdma_bptr;
+		hpc3.pbdma[i].ndptr = hpc3c0->pbdma[i].pbdma_dptr;
+	}
+	i = 0;
+	if (gio_err_stat & CPU_ERRMASK)
+		i = gio_err_addr;
+	if (cpu_err_stat & CPU_ERRMASK)
+		i = cpu_err_addr;
+	save_cache_tags(i);
+
+	sgimc->cstat = sgimc->gstat = 0;
+}
+
+static void print_cache_tags(void)
+{
+	unsigned i, scb, scw;
+
+	printk(KERN_ERR "Cache tags @ %08x:\n", (unsigned)cache_tags.err_addr);
+
+	/* PA[31:12] shifted to PTag0 (PA[35:12]) format */
+	scw = (cache_tags.err_addr >> 4) & 0x0fffff00;
+
+	scb = cache_tags.err_addr & ((1 << 12) - 1) & ~((1 << 5) - 1);
+	for (i = 0; i < 4; ++i) { /* for each possible VA[13:12] value */
+		if ((cache_tags.tagd[i][0].lo & 0x0fffff00) != scw &&
+		    (cache_tags.tagd[i][1].lo & 0x0fffff00) != scw)
+		    continue;
+		printk(KERN_ERR "D: 0: %08x %08x, 1: %08x %08x  (VA[13:5]  %04x)\n",
+			cache_tags.tagd[i][0].hi, cache_tags.tagd[i][0].lo,
+			cache_tags.tagd[i][1].hi, cache_tags.tagd[i][1].lo,
+			scb | (1 << 12)*i);
+	}
+	scb = cache_tags.err_addr & ((1 << 12) - 1) & ~((1 << 6) - 1);
+	for (i = 0; i < 4; ++i) { /* for each possible VA[13:12] value */
+		if ((cache_tags.tagi[i][0].lo & 0x0fffff00) != scw &&
+		    (cache_tags.tagi[i][1].lo & 0x0fffff00) != scw)
+		    continue;
+		printk(KERN_ERR "I: 0: %08x %08x, 1: %08x %08x  (VA[13:6]  %04x)\n",
+			cache_tags.tagi[i][0].hi, cache_tags.tagi[i][0].lo,
+			cache_tags.tagi[i][1].hi, cache_tags.tagi[i][1].lo,
+			scb | (1 << 12)*i);
+	}
+	i = read_c0_config();
+	scb = i & (1 << 13) ? 7:6;      /* scblksize = 2^[7..6] */
+	scw = ((i >> 16) & 7) + 19 - 1; /* scwaysize = 2^[24..19] / 2 */
+
+	i = ((1 << scw) - 1) & ~((1 << scb) - 1);
+	printk(KERN_ERR "S: 0: %08x %08x, 1: %08x %08x  (PA[%u:%u] %05x)\n",
+		cache_tags.tags[0][0].hi, cache_tags.tags[0][0].lo,
+		cache_tags.tags[0][1].hi, cache_tags.tags[0][1].lo,
+		scw-1, scb, i & (unsigned)cache_tags.err_addr);
+}
+
+static void print_buserr(void)
+{
+	int error = 0;
+
+	if (extio_stat & EXTIO_MC_BUSERR) {
+		printk(KERN_ERR "MC Bus Error\n");
+		error |= 1;
+	}
+	if (extio_stat & EXTIO_HPC3_BUSERR) {
+		printk(KERN_ERR "HPC3 Bus Error 0x%x:<id=0x%x,%s,lane=0x%x>\n",
+			hpc3_berr_stat,
+			(hpc3_berr_stat & HPC3_BESTAT_PIDMASK) >>
+					  HPC3_BESTAT_PIDSHIFT,
+			(hpc3_berr_stat & HPC3_BESTAT_CTYPE) ? "PIO" : "DMA",
+			hpc3_berr_stat & HPC3_BESTAT_BLMASK);
+		error |= 2;
+	}
+	if (extio_stat & EXTIO_EISA_BUSERR) {
+		printk(KERN_ERR "EISA Bus Error\n");
+		error |= 4;
+	}
+	if (cpu_err_stat & CPU_ERRMASK) {
+		printk(KERN_ERR "CPU error 0x%x<%s%s%s%s%s%s> @ 0x%08x\n",
+			cpu_err_stat,
+			cpu_err_stat & SGIMC_CSTAT_RD ? "RD " : "",
+			cpu_err_stat & SGIMC_CSTAT_PAR ? "PAR " : "",
+			cpu_err_stat & SGIMC_CSTAT_ADDR ? "ADDR " : "",
+			cpu_err_stat & SGIMC_CSTAT_SYSAD_PAR ? "SYSAD " : "",
+			cpu_err_stat & SGIMC_CSTAT_SYSCMD_PAR ? "SYSCMD " : "",
+			cpu_err_stat & SGIMC_CSTAT_BAD_DATA ? "BAD_DATA " : "",
+			cpu_err_addr);
+		error |= 8;
+	}
+	if (gio_err_stat & GIO_ERRMASK) {
+		printk(KERN_ERR "GIO error 0x%x:<%s%s%s%s%s%s%s%s> @ 0x%08x\n",
+			gio_err_stat,
+			gio_err_stat & SGIMC_GSTAT_RD ? "RD " : "",
+			gio_err_stat & SGIMC_GSTAT_WR ? "WR " : "",
+			gio_err_stat & SGIMC_GSTAT_TIME ? "TIME " : "",
+			gio_err_stat & SGIMC_GSTAT_PROM ? "PROM " : "",
+			gio_err_stat & SGIMC_GSTAT_ADDR ? "ADDR " : "",
+			gio_err_stat & SGIMC_GSTAT_BC ? "BC " : "",
+			gio_err_stat & SGIMC_GSTAT_PIO_RD ? "PIO_RD " : "",
+			gio_err_stat & SGIMC_GSTAT_PIO_WR ? "PIO_WR " : "",
+			gio_err_addr);
+		error |= 16;
+	}
+	if (!error)
+		printk(KERN_ERR "MC: Hmm, didn't find any error condition.\n");
+	else {
+		printk(KERN_ERR "CP0: config %08x,  "
+			"MC: cpuctrl0/1: %08x/%05x, giopar: %04x\n"
+			"MC: cpu/gio_memacc: %08x/%05x, memcfg0/1: %08x/%08x\n",
+			read_c0_config(),
+			sgimc->cpuctrl0, sgimc->cpuctrl0, sgimc->giopar,
+			sgimc->cmacc, sgimc->gmacc,
+			sgimc->mconfig0, sgimc->mconfig1);
+		print_cache_tags();
+	}
+}
+
+/*
+ * Try to find out, whether the bus error is caused by the instruction
+ * at EPC, otherwise we have an asynchronous error.
+ *
+ * Doc1: "MIPS IV Instruction Set", Rev 3.2 (SGI 007-2597-001)
+ * Doc2: "MIPS R10000 Microporcessor User's Manual", Ver 2.0 (SGI 007-2490-001)
+ * Doc3: "MIPS R4000 Microporcessor User's Manual", 2nd Ed. (SGI 007-2489-001)
+ */
+
+#define JMP_INDEX26_OP 1
+#define JMP_REGISTER_OP 2
+#define JMP_PCREL16_OP 3
+#define BASE_OFFSET_OP 4
+#define BASE_IDXREG_OP 5
+
+/* Match virtual address in an insn with physical error address */
+
+static int match_addr(unsigned paddr, unsigned long vaddr)
+{
+	unsigned uaddr;
+
+	if ((vaddr & 0xffffffff80000000L) == 0xffffffff80000000L)
+		uaddr = (unsigned) CPHYSADDR(vaddr);
+	else if ((vaddr >> 62) == 2)
+		uaddr = (unsigned) XPHYSADDR(vaddr);
+	else
+	{	unsigned long eh = vaddr & ~0x1fffL;
+		eh |= read_c0_entryhi() & 0xff;
+		write_c0_entryhi(eh);
+		tlb_probe();
+		if (read_c0_index() & 0x80000000)
+			return 0;
+		tlb_read();
+		if (vaddr & (1L << PAGE_SHIFT))
+			uaddr = (unsigned) read_c0_entrylo1();
+		else
+			uaddr = (unsigned) read_c0_entrylo0();
+		uaddr <<= 6;
+		uaddr &= ~PAGE_MASK;
+		uaddr |= vaddr & PAGE_MASK;
+	}
+	return ((uaddr & ~0x7f) == (paddr & ~0x7f));
+}
+
+/* Check, which kind of memory reference is triggered by `insn' */
+
+static int check_special(unsigned insn)
+{
+	/* See Doc1, page A-180 */
+	unsigned func = insn & 0x3f;
+
+	if (8 == func || 8+1 == func) /* JR, JALR */
+		return JMP_REGISTER_OP;
+
+	return 0;
+}
+
+static int check_regimm(unsigned insn)
+{
+	/* See Doc1, page A-180 */
+	unsigned rt = (insn >> 19) & 3; /* bits 20..19[..16] */
+
+	/* BLTZ, BGEZ, BLTZL, BBGEZL || BLTZAL, BGEZAL, BLTZALL, BBGEZALL */
+	if (!rt || 2 == rt)
+		return JMP_PCREL16_OP;
+
+	return 0;
+}
+
+static int check_cop0(unsigned insn)
+{
+	/* See Doc2, pages 287 ff., 187 ff. */
+	if ((insn >> 26) == 5*8+7) /* CACHE */
+		switch ((insn >> 16) & 0x1f) {
+			case Index_Writeback_Inv_D:
+			case Hit_Writeback_Inv_D:
+			case Index_Writeback_Inv_S:
+			case Hit_Writeback_Inv_S:
+				return BASE_OFFSET_OP;
+		}
+	return 0;
+}
+
+static int check_cop1(unsigned insn)
+{
+	/* See Doc1, pages B-108 ff. */
+	unsigned fmt = (insn >> 21) & 0x1f; /* bits 25..21 */
+
+	if (8 == fmt) /* BC1* */
+		return JMP_PCREL16_OP;
+
+	return 0;
+}
+
+static int check_cop1x(unsigned insn)
+{
+	/* See Doc1, pages B-108 ff. */
+	switch (insn & 0x3f) {
+		case 0:   /* LWXC1 */
+		case 1:   /* LDXC1 */
+		case 8:   /* SWXC1 */
+		case 8+1: /* SDXC1 */
+			return BASE_IDXREG_OP;
+	}
+	return 0;
+}
+
+static int check_plain(unsigned insn)
+{
+	/* See Doc1, page A-180 */
+	unsigned opcode = insn >> 26;
+
+	if (2 == opcode || 3 == opcode) /* J, JAL */
+		return JMP_INDEX26_OP;
+
+	if (4     <= opcode && opcode <= 7 ||   /* BEQ, BNE, BLEZ, BGTZ */
+	    4+2*8 <= opcode && opcode <= 7+2*8) /* BEQL, BNEL, BLEZL, BGTZL */
+		return JMP_PCREL16_OP;
+
+	if (6*8+3 == opcode) /* PREF */
+		return 0;
+
+	if (3*8+2 == opcode || 3*8+3 == opcode || /* LDL, LDR */
+	    4*8 <= opcode) /* misc. LOAD, STORE */
+		return BASE_OFFSET_OP;
+
+	return 0;
+}
+
+/* Check, whether the insn at EPC causes a memory access at `paddr' */
+
+static int check_addr_in_insn(unsigned paddr, struct pt_regs *regs)
+{
+	unsigned long epc;
+	unsigned insn;
+	int typ;
+
+	epc = regs->cp0_cause & CAUSEF_BD ? regs->cp0_epc:regs->cp0_epc+4;
+
+	/* show_code() from kernel/traps.c */
+	if (__get_user(insn, (unsigned*) epc))
+		return 1;
+
+	/* See Doc1, pages A-180, B-108 ff. */
+	switch (insn >> 26)
+	{	case 0:
+			typ = check_special(insn);
+			break;
+		case 1:
+			typ = check_regimm(insn);
+			break;
+		case 2*8:   /* COP0 */
+		case 5*8+7: /* CACHE */
+			typ = check_cop0(insn);
+			break;
+		case 2*8+1:
+			typ = check_cop1(insn);
+			break;
+		case 2*8+3:
+			typ = check_cop1x(insn);
+			break;
+		default:
+			typ = check_plain(insn);
+	}
+	switch (typ)
+	{	unsigned long a;
+		case JMP_INDEX26_OP:
+			a = (regs->cp0_epc + 4) & ~0xfffffff;
+			a |= (insn & 0x3ffffff) << 2;
+			return match_addr(paddr, a);
+		case JMP_REGISTER_OP:
+			a = regs->regs[(insn >> 21) & 0x1f];
+			return match_addr(paddr, a);
+		case JMP_PCREL16_OP:
+			a = regs->cp0_epc + 4 + ((insn & 0xffff) << 2);
+			return match_addr(paddr, a);
+		case BASE_OFFSET_OP:
+			a = regs->regs[(insn >> 21) & 0x1f] + (insn & 0xffff);
+			return match_addr(paddr, a);
+		case BASE_IDXREG_OP:
+			a = regs->regs[(insn >> 21) & 0x1f];
+			a += regs->regs[(insn >> 16) & 0x1f];
+			return match_addr(paddr, a);
+		case 0:
+			return 0;
+	}
+	/* Assume it would be too dangerous to continue ... */
+	return 1;
+}
+
+/* Check, whether MC's (virtual) DMA address caused the bus error. */
+
+static int check_vdma_memaddr (void)
+{
+	/* Deferred until needed. */
+	return 0;
+}
+
+static int check_vdma_gioaddr (void)
+{
+	/* Deferred until needed. */
+	return 0;
+}
+
+static inline const char *cause_excode_text(int cause)
+{
+	static const char *txt[32] =
+	{	"Interrupt",
+		"TLB modification",
+		"TLB (load or instruction fetch)",
+		"TLB (store)",
+		"Address error (load or instruction fetch)",
+		"Address error (store)",
+		"Bus error (instruction fetch)",
+		"Bus error (data: load or store)",
+		"Syscall",
+		"Breakpoint",
+		"Reserved instruction",
+		"Coprocessor unusable",
+		"Arithmetic Overflow",
+		"Trap",
+		"14",
+		"Floating-Point",
+		"16", "17", "18", "19", "20", "21", "22",
+		"Watch Hi/Lo",
+		"24", "25", "26", "27", "28", "29", "30", "31",
+	};
+	return txt[(cause & 0x7c) >> 2];
+}
+
+/*
+ * MC sends an interrupt whenever bus or parity errors occur. In addition,
+ * if the error happened during a CPU read, it also asserts the bus error
+ * pin on the R4K. Code in bus error handler save the MC bus error registers
+ * and then clear the interrupt when this happens.
+ */
+
+static int ip28_be_interrupt(struct pt_regs *regs)
+{
+	const int field = 2 * sizeof(unsigned long);
+	unsigned i;
+
+	save_and_clear_buserr();
+	print_buserr();
+	printk(KERN_ALERT "%s, epc == %0*lx, ra == %0*lx\n",
+	       cause_excode_text(regs->cp0_cause),
+	       field, regs->cp0_epc, field, regs->regs[31]);
+	/*
+	 * Try to find out, whether we got here by a mispredicted speculative
+	 * load/store operation.  If so, it's not fatal, we can go on.
+	 */
+	/* Any cause other than "Interrupt" (ExcCode 0) is fatal. */
+	if (regs->cp0_cause & CAUSEF_EXCCODE)
+		return MIPS_BE_FATAL;
+
+	/* Any cause other than "Bus error interrupt" (IP6) is weird. */
+	if ((regs->cp0_cause & CAUSEF_IP6) != CAUSEF_IP6)
+		return MIPS_BE_FATAL;
+
+	if (extio_stat & (EXTIO_HPC3_BUSERR | EXTIO_EISA_BUSERR))
+		return MIPS_BE_FATAL;
+
+	/* Any state other than "Memory bus error" is fatal. */
+	if (cpu_err_stat & CPU_ERRMASK & ~SGIMC_CSTAT_ADDR)
+			return MIPS_BE_FATAL;
+
+	/* Any state other than "GIO transaction bus timed out" is fatal. */
+	if (gio_err_stat & GIO_ERRMASK & ~SGIMC_GSTAT_TIME)
+		return MIPS_BE_FATAL;
+
+	/* Finding `cpu_err_addr' in the insn at EPC is fatal. */
+	if ((cpu_err_stat & CPU_ERRMASK) && check_addr_in_insn(cpu_err_addr,regs))
+			return MIPS_BE_FATAL;
+
+	/* Finding `gio_err_addr' in the insn at EPC is fatal. */
+	if ((gio_err_stat & GIO_ERRMASK) && check_addr_in_insn(gio_err_addr,regs))
+		return MIPS_BE_FATAL;
+	/*
+	 * Now we have an asynchronous bus error, speculatively or DMA caused.
+	 * Need to search all DMA descriptors for the error address.
+	 */
+	for (i = 0; i < sizeof(hpc3)/sizeof(struct hpc3_stat); ++i) {
+		struct hpc3_stat *hp = (struct hpc3_stat *)&hpc3 + i;
+		if ((cpu_err_stat & CPU_ERRMASK) &&
+		    (cpu_err_addr == hp->ndptr || cpu_err_addr == hp->cbp))
+			break;
+		if ((gio_err_stat & GIO_ERRMASK) &&
+		    (gio_err_addr == hp->ndptr || gio_err_addr == hp->cbp))
+			break;
+	}
+	if (i < sizeof(hpc3)/sizeof(struct hpc3_stat)) {
+		struct hpc3_stat *hp = (struct hpc3_stat *)&hpc3 + i;
+		printk(KERN_ERR "at DMA addresses: HPC3 @ %08lx:"
+		       " ctl %08x, ndp %08x, cbp %08x\n",
+		       CPHYSADDR(hp->addr), hp->ctrl, hp->ndptr, hp->cbp);
+		return MIPS_BE_FATAL;
+	}
+	/* Check MC's virtual DMA stuff. */
+	if ( check_vdma_memaddr() ) {
+		printk(KERN_ERR "at GIO DMA: mem address 0x%08x.\n",
+			sgimc->maddronly);
+		return MIPS_BE_FATAL;
+	}
+	if ( check_vdma_gioaddr() ) {
+		printk(KERN_ERR "at GIO DMA: gio address 0x%08x.\n",
+			sgimc->gmaddronly);
+		return MIPS_BE_FATAL;
+	}
+	/* A speculative bus error... */
+	printk(KERN_ERR "discarded!\n");
+	return MIPS_BE_DISCARD;
+}
+
+void ip22_be_interrupt(int irq, struct pt_regs *regs)
+{
+	if (ip28_be_interrupt(regs) != MIPS_BE_DISCARD) {
+		/* Assume it would be too dangerous to continue ... */
+		die_if_kernel("Oops", regs);
+		force_sig(SIGBUS, current);
+	} else {
+		show_regs(regs);
+		show_code((unsigned int *) regs->cp0_epc);
+	}
+}
+
+static int ip28_be_handler(struct pt_regs *regs, int is_fixup)
+{
+	/*
+	 * We arrive here only in the unusual case of do_be() invocation,
+	 * i.e. by a bus error exception without a bus error interrupt.
+	 */
+	if (is_fixup) {
+		save_and_clear_buserr();
+		return MIPS_BE_FIXUP;
+	}
+	return ip28_be_interrupt(regs);
+}
+
+void __init ip22_be_init(void)
+{
+	board_be_handler = ip28_be_handler;
+}
diff -Nur linux-git/arch/mips/sgi-ip22/Makefile linux-git-mit-R10k-patches/arch/mips/sgi-ip22/Makefile
--- linux-git/arch/mips/sgi-ip22/Makefile	2005-10-15 16:01:07.000000000 +0200
+++ linux-git-mit-R10k-patches/arch/mips/sgi-ip22/Makefile	2005-10-16 13:21:56.000000000 +0200
@@ -3,9 +3,13 @@
 # under Linux.
 #
 
-obj-y	+= ip22-mc.o ip22-hpc.o ip22-int.o ip22-irq.o ip22-berr.o \
+obj-y	+= ip22-mc.o ip22-hpc.o ip22-int.o ip22-irq.o \
 	   ip22-time.o ip22-nvram.o ip22-reset.o ip22-setup.o
 
+obj-$(CONFIG_SGI_IP28)	+= ip28-berr.o
+obj-$(CONFIG_SGI_IP22)	+= ip22-berr.o
 obj-$(CONFIG_EISA)	+= ip22-eisa.o
 
 EXTRA_AFLAGS := $(CFLAGS)
+
+# Revision 1.19, Tue Nov 18 05:15:20 2003
diff -Nur linux-git/drivers/char/Kconfig linux-git-mit-R10k-patches/drivers/char/Kconfig
--- linux-git/drivers/char/Kconfig	2005-10-15 16:01:11.000000000 +0200
+++ linux-git-mit-R10k-patches/drivers/char/Kconfig	2005-10-16 13:21:56.000000000 +0200
@@ -762,7 +762,7 @@
 
 config SGI_DS1286
 	tristate "SGI DS1286 RTC support"
-	depends on SGI_IP22
+	depends on (SGI_IP22 || SGI_IP28)
 	help
 	  If you say Y here and create a character special file /dev/rtc with
 	  major number 10 and minor number 135 using mknod ("man mknod"), you
diff -Nur linux-git/drivers/char/tty_io.c linux-git-mit-R10k-patches/drivers/char/tty_io.c
--- linux-git/drivers/char/tty_io.c	2005-10-15 16:01:12.000000000 +0200
+++ linux-git-mit-R10k-patches/drivers/char/tty_io.c	2005-10-16 13:21:56.000000000 +0200
@@ -744,6 +744,7 @@
  
 void tty_wakeup(struct tty_struct *tty)
 {
+	if (tty) {
 	struct tty_ldisc *ld;
 	
 	if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags)) {
@@ -755,6 +756,7 @@
 		}
 	}
 	wake_up_interruptible(&tty->write_wait);
+	}
 }
 
 EXPORT_SYMBOL_GPL(tty_wakeup);
@@ -3014,3 +3016,7 @@
 	return 0;
 }
 module_init(tty_init);
+/*
+ * Revision 1.133, Tue Apr 19 00:39:02 2005
+ * Wed Jan  5 02:16:41 2005
+ */
diff -Nur linux-git/drivers/char/watchdog/Kconfig linux-git-mit-R10k-patches/drivers/char/watchdog/Kconfig
--- linux-git/drivers/char/watchdog/Kconfig	2005-10-15 16:01:12.000000000 +0200
+++ linux-git-mit-R10k-patches/drivers/char/watchdog/Kconfig	2005-10-16 13:21:56.000000000 +0200
@@ -427,7 +427,7 @@
 
 config INDYDOG
 	tristate "Indy/I2 Hardware Watchdog"
-	depends on WATCHDOG && SGI_IP22
+	depends on WATCHDOG && (SGI_IP22 || SGI_IP28)
 	help
 	  Hardwaredriver for the Indy's/I2's watchdog. This is a
 	  watchdog timer that will reboot the machine after a 60 second
diff -Nur linux-git/drivers/input/serio/i8042.c linux-git-mit-R10k-patches/drivers/input/serio/i8042.c
--- linux-git/drivers/input/serio/i8042.c	2005-10-15 16:01:13.000000000 +0200
+++ linux-git-mit-R10k-patches/drivers/input/serio/i8042.c	2005-10-16 13:21:56.000000000 +0200
@@ -656,7 +656,13 @@
 	if (i8042_command(&param, I8042_CMD_AUX_ENABLE))
 		return -1;
 	if (i8042_command(&param, I8042_CMD_CTL_RCTR) || (param & I8042_CTR_AUXDIS))
+#ifdef CONFIG_SGI_IP28
+		/* Seems we need to invert the CTR_AUXDIS-test on this machine:
+		 * CMD_AUX_DISABLE -> rctr 0xcf, CMD_AUX_ENABLE -> rctr 0xef */
+		printk(KERN_WARNING "Failed to enable AUX port, but continuing anyway... ;)\n");
+#else
 		return -1;
+#endif
 
 /*
  * Disable the interface.
diff -Nur linux-git/drivers/input/serio/i8042.h linux-git-mit-R10k-patches/drivers/input/serio/i8042.h
--- linux-git/drivers/input/serio/i8042.h	2005-10-15 16:01:13.000000000 +0200
+++ linux-git-mit-R10k-patches/drivers/input/serio/i8042.h	2005-10-16 13:21:56.000000000 +0200
@@ -17,7 +17,7 @@
 
 #if defined(CONFIG_MACH_JAZZ)
 #include "i8042-jazzio.h"
-#elif defined(CONFIG_SGI_IP22)
+#elif defined(CONFIG_SGI_IP22) || defined(CONFIG_SGI_IP28)
 #include "i8042-ip22io.h"
 #elif defined(CONFIG_PPC)
 #include "i8042-ppcio.h"
@@ -131,3 +131,7 @@
 #endif
 
 #endif /* _I8042_H */
+/*
+ * Revision 1.10, Tue Apr 19 00:50:01 2005
+ * Tue Dec  7 19:43:43 2004	- IP28
+ */
diff -Nur linux-git/drivers/net/Kconfig linux-git-mit-R10k-patches/drivers/net/Kconfig
--- linux-git/drivers/net/Kconfig	2005-10-15 16:01:16.000000000 +0200
+++ linux-git-mit-R10k-patches/drivers/net/Kconfig	2005-10-16 13:21:56.000000000 +0200
@@ -1728,7 +1728,7 @@
 
 config SGISEEQ
 	tristate "SGI Seeq ethernet controller support"
-	depends on NET_ETHERNET && SGI_IP22
+	depends on NET_ETHERNET && (SGI_IP22 || SGI_IP26 || SGI_IP28)
 	help
 	  Say Y here if you have an Seeq based Ethernet network card. This is
 	  used in many Silicon Graphics machines.
diff -Nur linux-git/drivers/scsi/Kconfig linux-git-mit-R10k-patches/drivers/scsi/Kconfig
--- linux-git/drivers/scsi/Kconfig	2005-10-15 16:01:20.000000000 +0200
+++ linux-git-mit-R10k-patches/drivers/scsi/Kconfig	2005-10-16 13:21:56.000000000 +0200
@@ -249,7 +249,7 @@
 
 config SGIWD93_SCSI
 	tristate "SGI WD93C93 SCSI Driver"
-	depends on SGI_IP22 && SCSI
+	depends on (SGI_IP22 || SGI_IP26 || SGI_IP28) && SCSI
   	help
 	  If you have a Western Digital WD93 SCSI controller on
 	  an SGI MIPS system, say Y.  Otherwise, say N.
diff -Nur linux-git/drivers/scsi/wd33c93.c linux-git-mit-R10k-patches/drivers/scsi/wd33c93.c
--- linux-git/drivers/scsi/wd33c93.c	2005-10-15 16:01:23.000000000 +0200
+++ linux-git-mit-R10k-patches/drivers/scsi/wd33c93.c	2005-10-16 13:21:56.000000000 +0200
@@ -1460,7 +1460,7 @@
 	const wd33c93_regs regs = hostdata->regs;
 	uchar sr;
 
-#ifdef CONFIG_SGI_IP22
+#if defined(CONFIG_SGI_IP22) || defined(CONFIG_SGI_IP28)
 	{
 		int busycount = 0;
 		extern void sgiwd93_reset(unsigned long);
diff -Nur linux-git/drivers/serial/ip22zilog.c linux-git-mit-R10k-patches/drivers/serial/ip22zilog.c
--- linux-git/drivers/serial/ip22zilog.c	2005-10-15 16:01:24.000000000 +0200
+++ linux-git-mit-R10k-patches/drivers/serial/ip22zilog.c	2005-10-16 13:44:41.000000000 +0200
@@ -1015,9 +1015,9 @@
 
 	spin_lock_irqsave(&up->port.lock, flags);
 	for (i = 0; i < count; i++, s++) {
-		ip22zilog_put_char(channel, *s);
 		if (*s == 10)
 			ip22zilog_put_char(channel, 13);
+		ip22zilog_put_char(channel, *s);
 	}
 	udelay(2);
 	spin_unlock_irqrestore(&up->port.lock, flags);
diff -Nur linux-git/drivers/serial/Kconfig linux-git-mit-R10k-patches/drivers/serial/Kconfig
--- linux-git/drivers/serial/Kconfig	2005-10-15 16:01:24.000000000 +0200
+++ linux-git-mit-R10k-patches/drivers/serial/Kconfig	2005-10-16 13:21:56.000000000 +0200
@@ -555,16 +555,18 @@
 
 config SERIAL_IP22_ZILOG
 	tristate "IP22 Zilog8530 serial support"
-	depends on SGI_IP22
+	depends on (SGI_IP22 || SGI_IP28)
 	select SERIAL_CORE
+	default y if SGI_IP28
 	help
-	  This driver supports the Zilog8530 serial ports found on SGI IP22
+	This driver supports the Zilog8530 serial ports found on SGI IP22-IP28
 	  systems.  Say Y or M if you want to be able to these serial ports.
 
 config SERIAL_IP22_ZILOG_CONSOLE
-	bool "Console on IP22 Zilog8530 serial port"
+	bool "Console on IP22/28 Zilog8530 serial port"
 	depends on SERIAL_IP22_ZILOG=y
 	select SERIAL_CORE_CONSOLE
+	default y if SGI_IP28
 
 config V850E_UART
 	bool "NEC V850E on-chip UART support"
diff -Nur linux-git/drivers/video/impact.c linux-git-mit-R10k-patches/drivers/video/impact.c
--- linux-git/drivers/video/impact.c	1970-01-01 01:00:00.000000000 +0100
+++ linux-git-mit-R10k-patches/drivers/video/impact.c	2005-10-16 13:22:04.000000000 +0200
@@ -0,0 +1,906 @@
+/*
+ * linux/drivers/video/impactsr.c -- SGI Octane MardiGras (IMPACTSR) graphics
+ * linux/drivers/video/impact.c   -- SGI Indigo2 MardiGras (IMPACT) graphics
+ *
+ *  Copyright (c) 2004 by Stanislaw Skowronek
+ *  Adapted to Indigo2 by pf, 2005
+ *
+ *  Based on linux/drivers/video/skeletonfb.c
+ *
+ *  This driver, as most of the IP30 (SGI Octane) port, is a result of massive
+ *  amounts of reverse engineering and trial-and-error. If anyone is interested
+ *  in helping with it, please contact me: <sskowron@et.put.poznan.pl>.
+ *
+ *  The basic functions of this driver are filling and blitting rectangles.
+ *  To achieve the latter, two DMA operations are used on Impact. It is unclear
+ *  to me, why is it so, but even Xsgi (the IRIX X11 server) does it this way.
+ *  It seems that fb->fb operations are not operational on these cards.
+ *
+ *  For this purpose, a kernel DMA pool is allocated (pool number 0). This pool
+ *  is (by default) 64kB in size. An ioctl could be used to set the value at
+ *  run-time. Applications can use this pool, however proper locking has to be
+ *  guaranteed. Kernel should be locked out from this pool by an ioctl.
+ *
+ *  The IMPACTSR is quite well worked-out currently, except for the Geometry
+ *  Engines (GE11). Any information about use of those devices would be very
+ *  useful. It would enable a Linux OpenGL driver, as most of OpenGL calls are
+ *  supported directly by the hardware. So far, I can't initialize the GE11.
+ *  Verification of microcode crashes the graphics.
+ *
+ *  This file is subject to the terms and conditions of the GNU General Public
+ *  License. See the file COPYING in the main directory of this archive for
+ *  more details.
+ */
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/errno.h>
+#include <linux/string.h>
+#include <linux/mm.h>
+#include <linux/tty.h>
+#include <linux/slab.h>
+#include <linux/delay.h>
+#include <linux/fb.h>
+#include <linux/init.h>
+#include <linux/vmalloc.h>
+#include <linux/module.h>
+#include <linux/dma-mapping.h>
+#include <linux/spinlock.h>
+#include <linux/font.h>
+#include <asm/sgi/mc.h>
+
+#include <video/impact.h>
+
+#if defined(CONFIG_SGI_IP28)||defined(CONFIG_SGI_IP26)||defined(CONFIG_SGI_IP22)
+ #define INDIGO2 1
+#else
+ #undef INDIGO2
+#endif
+
+/* Some fixed register values. */
+
+#ifdef INDIGO2 /* Impact (HQ3) registers */
+#define MSK_CFIFO_CNT	0x7f
+#define POOLS	4
+#else /* ImpactSR (HQ4) registers */
+#define VAL_CFIFO_HW	0x47
+#define VAL_CFIFO_LW	0x14
+#define VAL_CFIFO_DELAY	0x64
+#define VAL_DFIFO_HW	0x40
+#define VAL_DFIFO_LW	0x10
+#define VAL_DFIFO_DELAY	0
+#define MSK_CFIFO_CNT	0xff
+#define POOLS	5
+#endif
+
+#define IMPACT_KPOOL_SIZE	65536
+
+struct impact_par {
+	/* physical mmio base in HEART XTalk space */
+	unsigned long mmio_base;
+	/* virtual mmio base in kernel space */
+	unsigned long mmio_virt;
+	/* DMA pool management */
+	unsigned int *pool_txtbl[POOLS];
+	unsigned int pool_txnum[POOLS];
+	unsigned int pool_txmax[POOLS];
+	unsigned long pool_txphys[POOLS];
+	/* kernel DMA pools */
+	unsigned long **kpool_virt[POOLS];
+	unsigned long *kpool_phys[POOLS];
+	unsigned int kpool_size[POOLS];
+	/* locks to prevent simultaneous user and kernel access */
+	int open_flag;
+	int mmap_flag;
+	spinlock_t lock;
+};
+
+static struct fb_fix_screeninfo impact_fix = {
+	.id =		"Impact",
+	.smem_start = 	0,
+	.smem_len =	0,
+	.type =		FB_TYPE_PACKED_PIXELS,
+	.visual =	FB_VISUAL_TRUECOLOR,
+	.xpanstep =	0,
+	.ypanstep =	0,
+	.ywrapstep =	0,
+	.line_length =	0,
+	.accel =	FB_ACCEL_SGI_IMPACT,
+};
+
+static struct fb_var_screeninfo impact_var = {
+	.xres =		1280,
+	.yres =		1024,
+	.xres_virtual =	1280,
+	.yres_virtual =	1024,
+	.bits_per_pixel = 24,
+	.red =		{ .offset = 0, .length = 8 },
+	.green =	{ .offset = 8, .length = 8 },
+	.blue =		{ .offset = 16, .length = 8 },
+	.transp =	{ .offset = 24, .length = 8 },
+};
+
+static struct fb_info info;
+
+static unsigned int pseudo_palette[256];
+
+static struct impact_par current_par;
+
+int impact_init(void);
+
+/* --------------------- Gory Details --------------------- */
+#define MMIO (((struct impact_par *)p->par)->mmio_virt)
+#define PAR (*((struct impact_par *)p->par))
+
+static void impact_wait_cfifo(struct fb_info *p,int nslots)
+{
+	while((IMPACT_FIFOSTATUS(MMIO)&MSK_CFIFO_CNT)>(IMPACT_CFIFO_MAX-nslots));
+}
+static void impact_wait_cfifo_empty(struct fb_info *p)
+{
+	while(IMPACT_FIFOSTATUS(MMIO)&MSK_CFIFO_CNT);
+}
+static void impact_wait_bfifo(struct fb_info *p,int nslots)
+{
+	while((IMPACT_GIOSTATUS(MMIO)&0x1f)>(IMPACT_BFIFO_MAX-nslots));
+}
+static void impact_wait_bfifo_empty(struct fb_info *p)
+{
+	while(IMPACT_GIOSTATUS(MMIO)&0x1f);
+}
+static void impact_wait_dma(struct fb_info *p)
+{
+	while(IMPACT_DMABUSY(MMIO)&0x1f);
+	while(!(IMPACT_STATUS(MMIO)&1));
+	while(!(IMPACT_STATUS(MMIO)&2));
+	while(!(IMPACT_RESTATUS(MMIO)&0x100));
+}
+static void impact_wait_dmaready(struct fb_info *p)
+{
+	IMPACT_CFIFOW(MMIO)=0x000e0100;
+	while(IMPACT_DMABUSY(MMIO)&0x1eff);
+	while(!(IMPACT_STATUS(MMIO)&2));
+}
+
+static void impact_inithq(struct fb_info *p)
+{
+#ifndef INDIGO2 /* The friendly PROM did this already for us... */
+	/* CFIFO parameters */
+	IMPACT_CFIFO_HW(MMIO)=VAL_CFIFO_HW;
+	IMPACT_CFIFO_LW(MMIO)=VAL_CFIFO_LW;
+	IMPACT_CFIFO_DELAY(MMIO)=VAL_CFIFO_DELAY;
+	/* DFIFO parameters */
+	IMPACT_DFIFO_HW(MMIO)=VAL_DFIFO_HW;
+	IMPACT_DFIFO_LW(MMIO)=VAL_DFIFO_LW;
+	IMPACT_DFIFO_DELAY(MMIO)=VAL_DFIFO_DELAY;
+#endif
+}
+
+static void impact_initrss(struct fb_info *p)
+{
+	/* transfer mask registers */
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_COLORMASKLSBSA(0xffffff);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_COLORMASKLSBSB(0xffffff);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_COLORMASKMSBS(0);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_XFRMASKLO(0xffffff);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_XFRMASKHI(0xffffff);
+	/* use the main plane */
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_DRBPOINTERS(0xc8240);
+	/* set the RE into vertical flip mode */
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_CONFIG(0xcac);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_XYWIN(0,0x3ff);
+}
+
+static void impact_initxmap(struct fb_info *p)
+{
+	/* set XMAP into 24-bpp mode */
+	IMPACT_XMAP_PP1SELECT(MMIO)=0x01;
+	IMPACT_XMAP_INDEX(MMIO)=0x00;
+	IMPACT_XMAP_MAIN_MODE(MMIO)=0x07a4;
+}
+
+static void impact_initvc3(struct fb_info *p)
+{
+	/* cursor-b-gone (disable DISPLAY bit) */
+	IMPACT_VC3_INDEXDATA(MMIO)=0x1d000100;
+}
+
+static void impact_initdma(struct fb_info *p)
+{
+	unsigned long pool;
+	/* clear DMA pools */
+	for(pool=0;pool<POOLS;pool++) {
+		impact_wait_cfifo_empty(p);
+		IMPACT_CFIFOPW(MMIO)=IMPACT_CMD_HQ_TXBASE(pool);
+		IMPACT_CFIFOP(MMIO)=0x0000000000000009;
+		IMPACT_CFIFOP(MMIO)=IMPACT_CMD_HQ_TXMAX(pool,0);
+		IMPACT_CFIFOP(MMIO)=IMPACT_CMD_HQ_PGBITS(pool,0);
+		IMPACT_CFIFOP(MMIO)=0x00484b0400080000|(pool<<41);
+		PAR.pool_txmax[pool]=0;
+		PAR.pool_txnum[pool]=0;
+	}
+	/* set DMA parameters */
+	IMPACT_CFIFOP(MMIO)=IMPACT_CMD_HQ_PGSIZE(0);
+	IMPACT_CFIFOP(MMIO)=IMPACT_CMD_HQ_STACKPTR(0);
+	IMPACT_CFIFOP(MMIO)=0x00484a0400180000;
+	IMPACT_CFIFOPW(MMIO)=0x000e0100;
+	IMPACT_CFIFOPW(MMIO)=0x000e0100;
+	IMPACT_CFIFOPW(MMIO)=0x000e0100;
+	IMPACT_CFIFOPW(MMIO)=0x000e0100;
+	IMPACT_CFIFOPW(MMIO)=0x000e0100;
+	IMPACT_REG32(MMIO,X40918)=0x00680000;
+	IMPACT_REG32(MMIO,X40920)=0x80280000;
+	IMPACT_REG32(MMIO,X40928)=0x00000000;
+}
+
+static void impact_alloctxtbl(struct fb_info *p,int pool,int txmax)
+{
+	dma_addr_t dma_handle;
+	int alloc_size;
+	if(txmax>PAR.pool_txmax[pool]) { /* grow the pool - unlikely but supported */
+		alloc_size=txmax;
+		if(alloc_size<1024)
+			alloc_size=1024;
+		if(PAR.pool_txmax[pool])
+			dma_free_coherent(NULL,PAR.pool_txmax[pool]*4,
+				PAR.pool_txtbl[pool],PAR.pool_txphys[pool]);
+		PAR.pool_txtbl[pool]=
+			dma_alloc_coherent(NULL,alloc_size*4,&dma_handle,GFP_KERNEL);
+		PAR.pool_txphys[pool]=dma_handle;
+		PAR.pool_txmax[pool]=alloc_size;
+	}
+	PAR.pool_txnum[pool]=txmax;
+}
+
+static void impact_writetxtbl(struct fb_info *p,int pool)
+{
+	impact_wait_cfifo_empty(p);
+	/* inform the card about a new DMA pool */
+	IMPACT_CFIFOPW(MMIO)=IMPACT_CMD_HQ_TXBASE(pool);
+	IMPACT_CFIFOP(MMIO)=PAR.pool_txphys[pool];
+	IMPACT_CFIFOP(MMIO)=IMPACT_CMD_HQ_TXMAX(pool,PAR.pool_txnum[pool]);
+	IMPACT_CFIFOP(MMIO)=IMPACT_CMD_HQ_PGBITS(pool,0x0a);
+	IMPACT_CFIFOP(MMIO)=0x00484b0400180000|((long)pool<<41);
+	IMPACT_CFIFOPW(MMIO)=0x000e0100;
+	IMPACT_CFIFOPW(MMIO)=0x000e0100;
+	IMPACT_CFIFOPW(MMIO)=0x000e0100;
+	IMPACT_CFIFOPW(MMIO)=0x000e0100;
+	IMPACT_CFIFOPW(MMIO)=0x000e0100;
+}
+
+static void impact_settxtbl(struct fb_info *p,int pool,unsigned *txtbl,int txmax)
+{
+	impact_alloctxtbl(p,pool,txmax);
+	#if defined(CONFIG_SGI_IP28)||defined(CONFIG_SGI_IP26)
+	{	void *ca = (typeof(p)) TO_CAC((unsigned long)PAR.pool_txtbl[pool]);
+		memcpy(ca,txtbl,txmax*4);
+		dma_cache_wback_inv((unsigned long)ca, txmax*4);
+	}
+	#else
+		memcpy(PAR.pool_txtbl[pool],txtbl,txmax*4);
+	#endif
+	impact_writetxtbl(p,pool);
+}
+
+static void impact_resizekpool(struct fb_info *p,int pool,int size,int growonly)
+{
+	typeof(PAR.pool_txtbl[pool]) txtbl;
+	int pages;
+	int i;
+	dma_addr_t dma_handle;
+	if(growonly && PAR.kpool_size[pool]>=size)
+		return;
+	if(size<8192)	/* single line smallcopy (1280*4) *must* work */
+		size=8192;
+	pages=(size+PAGE_SIZE-1)>>PAGE_SHIFT;
+	if(PAR.kpool_size[pool]>0) {
+		for(i=0;i<PAR.pool_txnum[pool];i++) {
+			unsigned long x=(typeof(x))PAR.kpool_virt[pool][i];
+			#if defined(CONFIG_DMA_NONCOHERENT)
+				/* Screw it, or this damned virt_to_page() will blow up the driver. */
+				x=(typeof(x))phys_to_virt(kernel_physaddr(x));
+			#endif
+			ClearPageReserved(virt_to_page(x));
+			dma_free_coherent(NULL,PAGE_SIZE,PAR.kpool_virt[pool][i],
+					PAR.kpool_phys[pool][i]);
+		}
+		vfree(PAR.kpool_phys[pool]);
+		vfree(PAR.kpool_virt[pool]);
+	}
+	impact_alloctxtbl(p,pool,pages);
+	txtbl = PAR.pool_txtbl[pool];
+	#if defined(CONFIG_SGI_IP28)||defined(CONFIG_SGI_IP26)
+		txtbl = (typeof(txtbl)) TO_CAC((unsigned long) txtbl);
+	#endif
+	PAR.kpool_virt[pool]=vmalloc(pages*sizeof(unsigned long));
+	PAR.kpool_phys[pool]=vmalloc(pages*sizeof(unsigned long));
+	for(i=0;i<PAR.pool_txnum[pool];i++) {
+		unsigned long x;
+		PAR.kpool_virt[pool][i]=
+			dma_alloc_coherent(NULL,PAGE_SIZE,&dma_handle,GFP_KERNEL);
+		x=(typeof(x))PAR.kpool_virt[pool][i];
+		#if defined(CONFIG_DMA_NONCOHERENT)
+			/* Screw it, or this damned virt_to_page() will blow up the driver. */
+			x=(typeof(x))phys_to_virt(kernel_physaddr(x));
+		#endif
+		SetPageReserved(virt_to_page(x));
+		PAR.kpool_phys[pool][i]=dma_handle;
+		txtbl[i]=dma_handle>>PAGE_SHIFT;
+	}
+	#if defined(CONFIG_SGI_IP28) || defined(CONFIG_SGI_IP26)
+		i=sizeof(*txtbl)*PAR.pool_txnum[pool];
+		dma_cache_wback_inv((unsigned long)txtbl, i);
+	#endif
+	impact_writetxtbl(p,pool);
+	PAR.kpool_size[pool]=pages*PAGE_SIZE;
+}
+
+static void
+impact_rect(struct fb_info *p, int x, int y, int w, int h, unsigned c, int lo)
+{
+	impact_wait_cfifo_empty(p);
+	if(lo==IMPACT_LO_COPY)
+		IMPACT_CFIFO(MMIO)=IMPACT_CMD_PP1FILLMODE(0x6300,lo);
+	else
+		IMPACT_CFIFO(MMIO)=IMPACT_CMD_PP1FILLMODE(0x6304,lo);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_FILLMODE(0);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_PACKEDCOLOR(c);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_BLOCKXYSTARTI(x,y);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_BLOCKXYENDI(x+w-1,y+h-1);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_IR_ALIAS(0x18);
+}
+
+static void
+impact_framerect(struct fb_info *p, int x, int y, int w, int h, unsigned c)
+{
+	impact_rect(p,x,y,w,1,c,IMPACT_LO_COPY);
+	impact_rect(p,x,y+h-1,w,1,c,IMPACT_LO_COPY);
+	impact_rect(p,x,y,1,h,c,IMPACT_LO_COPY);
+	impact_rect(p,x+w-1,y,1,h,c,IMPACT_LO_COPY);
+}
+
+static unsigned long dcntr;
+static void impact_debug(struct fb_info *p,int v)
+{
+	int i;
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_PIXCMD(3);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_HQ_PIXELFORMAT(0xe00);
+	switch(v) {
+	case 0:
+		for(i=0;i<64;i++)
+			impact_rect(p,4*(i&7),28-4*(i>>3),4,4,
+				(dcntr&(1L<<i))?0xa080ff:0x100030,IMPACT_LO_COPY);
+		break;
+	case 1:
+		dcntr++;
+		for(i=0;i<64;i++)
+			impact_rect(p,4*(i&7),28-4*(i>>3),4,4,
+				(dcntr&(1L<<i))?0xff80a0:0x300010,IMPACT_LO_COPY);
+		break;
+	case 2:
+		for(i=0;i<64;i++)
+			impact_rect(p,4*(i&7),28-4*(i>>3),4,4,
+				(dcntr&(1L<<i))?0xa0ff80:0x103000,IMPACT_LO_COPY);
+	}
+}
+
+static void impact_smallcopy(struct fb_info *p,unsigned sx,unsigned sy,
+				unsigned dx,unsigned dy,unsigned w,unsigned h)
+{
+	if(w<1 || h<1)
+		return;
+	w=(w+1)&~1;
+	/* setup and perform DMA from RE to HOST */
+	impact_wait_dma(p);
+#ifndef INDIGO2 /* Beware, only MaxImpact has 2 REs, SI,HI will hang ! */
+	if(sy&1)
+		IMPACT_CFIFO(MMIO)=IMPACT_CMD_CONFIG(0xca5);
+	else
+#endif
+		IMPACT_CFIFO(MMIO)=IMPACT_CMD_CONFIG(0xca4);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_PIXCMD(2);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_PP1FILLMODE(0x2200,IMPACT_LO_COPY);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_COLORMASKLSBSA(0xffffff);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_COLORMASKLSBSB(0xffffff);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_COLORMASKMSBS(0);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_DRBPOINTERS(0xc8240);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_BLOCKXYSTARTI(sx,sy+h-1);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_BLOCKXYENDI(sx+w-1,sy);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_XFRMASKLO(0xffffff);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_XFRMASKHI(0xffffff);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_XFRSIZE(w,h);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_XFRCOUNTERS(w,h);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_XFRMODE(0x00080);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_FILLMODE(0x01000000);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_HQ_PIXELFORMAT(0x200);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_HQ_SCANWIDTH(w<<2);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_HQ_DMATYPE(0x0a);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_HQ_PG_LIST_0(0x80000000);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_HQ_PG_WIDTH(w<<2);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_HQ_PG_OFFSET(0);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_HQ_PG_STARTADDR(0);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_HQ_PG_LINECNT(h);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_HQ_PG_WIDTHA(w<<2);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_XFRCONTROL(8);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_GLINE_XSTARTF(1);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_IR_ALIAS(0x18);
+	#if 0
+	IMPACT_CFIFOW(MMIO)=0x00080b04;
+	IMPACT_CFIFO(MMIO)=0x000000b900190204L;
+	IMPACT_CFIFOW(MMIO)=0x00000009;
+	#else
+	IMPACT_CFIFO(MMIO)=0x00080b04000000b9L;
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_XFRCONTROL(9);
+	#endif
+	impact_wait_dmaready(p);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_GLINE_XSTARTF(0);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_RE_TOGGLECNTX(0);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_XFRCOUNTERS(0,0);
+	/* setup and perform DMA from HOST to RE */
+	impact_wait_dma(p);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_CONFIG(0xca4);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_PP1FILLMODE(0x6200,IMPACT_LO_COPY);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_BLOCKXYSTARTI(dx,dy+h-1);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_BLOCKXYENDI(dx+w-1,dy);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_FILLMODE(0x01400000);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_XFRMODE(0x00080);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_HQ_PIXELFORMAT(0x600);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_HQ_SCANWIDTH(w<<2);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_HQ_DMATYPE(0x0c);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_PIXCMD(3);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_XFRSIZE(w,h);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_XFRCOUNTERS(w,h);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_GLINE_XSTARTF(1);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_IR_ALIAS(0x18);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_XFRCONTROL(1);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_HQ_PG_LIST_0(0x80000000);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_HQ_PG_OFFSET(0);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_HQ_PG_STARTADDR(0);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_HQ_PG_LINECNT(h);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_HQ_PG_WIDTHA(w<<2);
+	#if 0
+	IMPACT_CFIFOW(MMIO)=0x0080b04;
+	IMPACT_CFIFO(MMIO)=0x000000b1000e0400L;
+	#else
+	IMPACT_CFIFO(MMIO)=0x0080b04000000b1L;
+	IMPACT_CFIFOW(MMIO)=0x000e0400;
+	#endif
+	impact_wait_dma(p);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_GLINE_XSTARTF(0);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_RE_TOGGLECNTX(0);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_XFRCOUNTERS(0,0);
+}
+
+static unsigned impact_getpalreg(struct fb_info *p, unsigned i)
+{
+	return ((unsigned *)p->pseudo_palette)[i];
+}
+
+/* ------------ Accelerated Functions --------------------- */
+
+static void impact_fillrect(struct fb_info *p, const struct fb_fillrect *region)
+{
+	unsigned long flags;
+	spin_lock_irqsave(&PAR.lock,flags);
+	if(!PAR.open_flag)
+		switch(region->rop) {
+		case ROP_XOR:
+			impact_rect(p,region->dx,region->dy,region->width,region->height,
+				impact_getpalreg(p,region->color),IMPACT_LO_XOR);
+			break;
+		case ROP_COPY:
+		default:
+			impact_rect(p,region->dx,region->dy,region->width,region->height,
+				impact_getpalreg(p,region->color),IMPACT_LO_COPY);
+			break;
+		}
+	spin_unlock_irqrestore(&PAR.lock,flags);
+}
+
+static void impact_copyarea(struct fb_info *p, const struct fb_copyarea *area)
+{
+	unsigned sx,sy,dx,dy,w,h;
+	unsigned th,ah;
+	unsigned long flags;
+	w=area->width;
+	h=area->height;
+	if(w<1 || h<1)
+		return;
+	spin_lock_irqsave(&PAR.lock,flags);
+	if(PAR.open_flag) {
+		spin_unlock_irqrestore(&PAR.lock,flags);
+		return;
+	}
+	sx=area->sx;
+	sy=0x3ff-(area->sy+h-1);
+	dx=area->dx;
+	dy=0x3ff-(area->dy+h-1);
+	th=PAR.kpool_size[0]/(w*4);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_XYWIN(0,0);
+	if(dy>sy) {
+		dy+=h;
+		sy+=h;
+		while(h>0) {
+			ah=th>h?h:th;
+			impact_smallcopy(p,sx,sy-ah,dx,dy-ah,w,ah);
+			dy-=ah;
+			sy-=ah;
+			h-=ah;
+		}
+	} else {
+		while(h>0) {
+			ah=th>h?h:th;
+			impact_smallcopy(p,sx,sy,dx,dy,w,ah);
+			dy+=ah;
+			sy+=ah;
+			h-=ah;
+		}
+	}
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_PIXCMD(0);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_HQ_PIXELFORMAT(0xe00);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_CONFIG(0xcac);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_XYWIN(0,0x3ff);
+	spin_unlock_irqrestore(&PAR.lock,flags);
+}
+
+/* 8-bpp blits are done as PIO draw operation; the pixels are unpacked into
+   32-bpp values from the current palette in software */
+static void
+impact_imageblit_8bpp(struct fb_info *p, const struct fb_image *image)
+{
+	int i,u,v;
+	const unsigned char *dp;
+	unsigned pix;
+	unsigned pal[256];
+	/* setup PIO to RE */
+	impact_wait_cfifo_empty(p);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_PP1FILLMODE(0x6300,IMPACT_LO_COPY);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_BLOCKXYSTARTI(image->dx,image->dy);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_BLOCKXYENDI(image->dx+image->width-1,
+						image->dy+image->height-1);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_FILLMODE(0x00c00000);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_XFRMODE(0x00080);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_XFRSIZE(image->width,image->height);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_XFRCOUNTERS(image->width,image->height);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_GLINE_XSTARTF(1);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_IR_ALIAS(0x18);
+	/* another workaround.. 33 writes to alpha... hmm... */
+	for(i=0;i<33;i++)
+		IMPACT_CFIFO(MMIO)=IMPACT_CMD_ALPHA(0);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_XFRCONTROL(2);
+	/* pairs of pixels are sent in two writes to the RE */
+	i=0;
+	dp=image->data;
+	for(v=0;v<256;v++)
+		pal[v]=impact_getpalreg(p,v);
+	for(v=0;v<image->height;v++) {
+		for(u=0;u<image->width;u++) {
+			pix=pal[*(dp++)];
+			if(i)
+				IMPACT_CFIFO(MMIO)=IMPACT_CMD_CHAR_L(pix);
+			else
+				IMPACT_CFIFO(MMIO)=IMPACT_CMD_CHAR_H(pix);
+			i^=1;
+		}
+	}
+	if(i)
+		IMPACT_CFIFO(MMIO)=IMPACT_CMD_CHAR_L(0);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_GLINE_XSTARTF(0);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_RE_TOGGLECNTX(0);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_XFRCOUNTERS(0,0);
+}
+
+/* 1-bpp blits are done as character drawing; the bitmaps are drawn as 8-bit wide
+   strips; technically, Impact supports 16-pixel wide characters, but Linux bitmap
+   alignment is 8 bits and most draws are 8 pixels wide (font width), anyway */
+static void impact_imageblit_1bpp(struct fb_info *p, const struct fb_image *image)
+{
+	int x,y,w,h,b;
+	int u,v,a;
+	const unsigned char *d;
+	impact_wait_cfifo_empty(p);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_PP1FILLMODE(0x6300,IMPACT_LO_COPY);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_FILLMODE(0x400018);
+	a=impact_getpalreg(p,image->fg_color);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_PACKEDCOLOR(a);
+	a=impact_getpalreg(p,image->bg_color);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_BKGRD_RG(a&0xffff);
+	IMPACT_CFIFO(MMIO)=IMPACT_CMD_BKGRD_BA((a&0xff0000)>>16);
+	x=image->dx;
+	y=image->dy;
+	w=image->width;
+	h=image->height;
+	b=(w+7)/8;
+	for(u=0;u<b;u++) {
+		impact_wait_cfifo_empty(p);
+		a=(w<8)?w:8;
+		d=image->data+u;
+		IMPACT_CFIFO(MMIO)=IMPACT_CMD_BLOCKXYSTARTI(x,y);
+		IMPACT_CFIFO(MMIO)=IMPACT_CMD_BLOCKXYENDI(x+a-1,y+h-1);
+		IMPACT_CFIFO(MMIO)=IMPACT_CMD_IR_ALIAS(0x18);
+		for(v=0;v<h;v++) {
+			IMPACT_CFIFO(MMIO)=IMPACT_CMD_CHAR((*d)<<24);
+			d+=b;
+		}
+		w-=a;
+		x+=a;
+	}
+}
+
+static void impact_imageblit(struct fb_info *p, const struct fb_image *image)
+{
+	unsigned long flags;
+	spin_lock_irqsave(&PAR.lock,flags);
+	if(!PAR.open_flag)
+		switch(image->depth) {
+		case 1:
+			impact_imageblit_1bpp(p,image);
+			break;
+		case 8:
+			impact_imageblit_8bpp(p,image);
+			break;
+		}
+	spin_unlock_irqrestore(&PAR.lock,flags);
+}
+
+static int impact_sync(struct fb_info *info)
+{
+	return 0;
+}
+
+static int impact_blank(int blank_mode, struct fb_info *info)
+{
+	/* TODO */
+	return 0;
+}
+
+static int impact_setcolreg(unsigned regno, unsigned red, unsigned green,
+			   unsigned blue, unsigned transp, struct fb_info *info)
+{
+	if(regno>255)
+		return 1;
+	((unsigned *)info->pseudo_palette)[regno]=
+		(red>>8)|(green&0xff00)|((blue<<8)&0xff0000);
+	return 0;
+}
+
+/* ------------------- Framebuffer Access -------------------- */
+
+ssize_t impact_read(struct file *file, char *buf, size_t count, loff_t *ppos)
+{
+	return -EINVAL;
+}
+
+ssize_t
+impact_write(struct file *file, const char *buf, size_t count, loff_t *ppos)
+{
+	return -EINVAL;
+}
+
+/* --------------------- Userland Access --------------------- */
+
+int impact_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
+			unsigned long arg, struct fb_info *info)
+{
+	return -EINVAL;
+}
+
+int
+impact_mmap(struct fb_info *p, struct file *file, struct vm_area_struct *vma)
+{
+	unsigned pool, i, n;
+	unsigned long size = vma->vm_end - vma->vm_start;
+	unsigned long offset = vma->vm_pgoff << PAGE_SHIFT;
+	unsigned long start = vma->vm_start;
+
+#ifdef INDIGO2
+	if (vma->vm_pgoff > (~0UL >> PAGE_SHIFT))
+		return -EINVAL;
+	if (offset + size > 0x400000)
+		return -EINVAL;
+	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
+	vma->vm_flags |= VM_IO;
+	if (remap_pfn_range(vma, vma->vm_start, (offset+MMIO)>>PAGE_SHIFT,
+				size, vma->vm_page_prot))
+			return -EAGAIN;
+	vma->vm_file = file;
+	PAR.mmap_flag = 1;
+#else
+	switch(offset) {
+	case 0x0000000:
+	default:
+		if (offset+size>0x200000) /* >0x400000, >0x1000000 ? */
+			return -EINVAL;
+		if (vma->vm_pgoff > (~0UL >> PAGE_SHIFT))
+			return -EINVAL;
+		offset += MMIO;
+		vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
+		vma->vm_flags |= VM_IO;
+		if (remap_pfn_range(vma, vma->vm_start, offset>>PAGE_SHIFT,
+				size, vma->vm_page_prot))
+			return -EAGAIN;
+		vma->vm_file = file;
+		PAR.mmap_flag = 1;
+		break;
+	case 0x1000000:
+	case 0x2000000:
+	case 0x3000000:
+	case 0x8000000:
+	case 0x9000000:
+	case 0xa000000:
+	case 0xb000000:
+		if(size>0x1000000)
+			return EINVAL;
+		pool=(offset>>24)&7;
+		if (pool>=POOLS)
+			return -EINVAL;
+		impact_resizekpool(&info,pool,size,offset&0x8000000);
+		n=(size+PAGE_SIZE-1)>>PAGE_SHIFT;
+		for(i=0;i<n;i++) {
+			if (remap_pfn_range(vma, start,
+				PAR.kpool_phys[pool][i]>>PAGE_SHIFT, PAGE_SIZE,
+				vma->vm_page_prot))
+				return -EAGAIN;
+			start += PAGE_SIZE;
+		}
+		vma->vm_file = file;
+		PAR.mmap_flag = 1;
+	}
+#endif
+	return 0;
+}
+
+static int impact_open(struct fb_info *p, int user)
+{
+	unsigned long flags;
+	spin_lock_irqsave(&PAR.lock,flags);
+	if (user)
+		PAR.open_flag++;
+	spin_unlock_irqrestore(&PAR.lock,flags);
+	return 0;
+}
+
+static int impact_release(struct fb_info *p, int user)
+{
+	unsigned long flags;
+	spin_lock_irqsave(&PAR.lock,flags);
+	if (user && PAR.open_flag) {
+		PAR.open_flag--;
+		if (PAR.open_flag == 0) {
+			impact_resizekpool(&info,1,8192,0);
+			impact_resizekpool(&info,2,8192,0);
+			impact_resizekpool(&info,3,8192,0);
+			PAR.mmap_flag = 0;
+		}
+	}
+	spin_unlock_irqrestore(&PAR.lock,flags);
+	return 0;
+}
+
+
+/* ------------------------------------------------------------------------- */
+
+    /*
+     *  Frame buffer operations
+     */
+
+static struct fb_ops impact_ops = {
+	.owner		= THIS_MODULE,
+	.fb_read	= impact_read,
+	.fb_write	= impact_write,
+	.fb_blank	= impact_blank,
+	.fb_fillrect	= impact_fillrect,
+	.fb_copyarea	= impact_copyarea,
+	.fb_imageblit	= impact_imageblit,
+	.fb_cursor	= soft_cursor,
+	.fb_sync	= impact_sync,
+	.fb_ioctl	= impact_ioctl,
+	.fb_setcolreg	= impact_setcolreg,
+	.fb_mmap	= impact_mmap,
+	.fb_open	= impact_open,
+	.fb_release	= impact_release,
+};
+
+/* ------------------------------------------------------------------------- */
+
+    /*
+     *  Initialization
+     */
+
+static inline unsigned long gfxphysaddr(void)
+{
+#ifdef INDIGO2
+	extern unsigned long sgi_gfxaddr;	/* provided by ARCS */
+	return sgi_gfxaddr;
+#else
+	return 0x1c000000;	/* first card in Octane */
+#endif
+}
+
+static void __init impact_hwinit(void)
+{
+	/* initialize hardware */
+	impact_inithq(&info);
+	impact_initvc3(&info);
+	impact_initrss(&info);
+	impact_initxmap(&info);
+	impact_initdma(&info);
+}
+
+static int __init impact_devinit(void)
+{
+	int i;
+	current_par.open_flag = 0;
+	current_par.mmap_flag = 0;
+	current_par.lock = SPIN_LOCK_UNLOCKED;
+
+	current_par.mmio_base = gfxphysaddr();
+	if (!current_par.mmio_base) {
+		printk(KERN_INFO "impact_devinit: !gfxaddr\n");
+		return -EINVAL;
+	}
+	current_par.mmio_virt = (unsigned long)
+		ioremap(current_par.mmio_base,0x200000);
+	impact_fix.mmio_start = current_par.mmio_base;
+	impact_fix.mmio_len = 0x200000;
+
+	info.flags = FBINFO_FLAG_DEFAULT;
+	info.screen_base = NULL;
+	info.fbops = &impact_ops;
+	info.fix = impact_fix;
+	info.var = impact_var;
+	info.par = &current_par;
+	info.pseudo_palette = pseudo_palette;
+
+	impact_hwinit();
+	/* initialize buffers */
+	impact_resizekpool(&info,0,65536,0);
+	for (i = 1; i < POOLS; ++i)
+		impact_resizekpool(&info,i,8192,0);
+
+	/* This has to been done !!! */
+	fb_alloc_cmap(&info.cmap, 256, 0);
+
+	if (register_framebuffer(&info) < 0)
+		return -EINVAL;
+	printk(KERN_INFO "fb%d: %s frame buffer device\n", info.node,
+		info.fix.id);
+	return 0;
+}
+
+static int __init impact_probe(struct device *dev)
+{
+	return impact_devinit();
+}
+
+static struct device_driver impact_driver = {
+	.name = "impact",
+	.bus = &platform_bus_type,
+	.probe = impact_probe,
+	/* add remove someday */
+};
+
+static struct platform_device impact_device = {
+	.name = "impact",
+};
+
+int __init impact_init(void)
+{
+	int ret = driver_register(&impact_driver);
+	if (!ret) {
+		ret = platform_device_register(&impact_device);
+		if (ret)
+			driver_unregister(&impact_driver);
+	}
+	return ret;
+}
+
+void __exit impact_exit(void)
+{
+	 driver_unregister(&impact_driver);
+}
+
+module_init(impact_init);
+module_exit(impact_exit);
+
+MODULE_LICENSE("GPL");
diff -Nur linux-git/drivers/video/Kconfig linux-git-mit-R10k-patches/drivers/video/Kconfig
--- linux-git/drivers/video/Kconfig	2005-10-15 16:01:25.000000000 +0200
+++ linux-git-mit-R10k-patches/drivers/video/Kconfig	2005-10-16 13:22:04.000000000 +0200
@@ -568,6 +568,14 @@
 	  This is the amount of memory reserved for the framebuffer,
 	  which can be any value between 1MB and 8MB.
 
+config FB_IMPACT
+	tristate "SGI Octane ImpactSR / Indigo2 Impact graphics support"
+	depends on FB && (SGI_IP22 || SGI_IP26 || SGI_IP28 || SGI_IP30)
+	select FB_SOFT_CURSOR
+	help
+	  SGI Octane ImpactSR (SI/SSI/MXI/SE/SSE/MXE) graphics card support.
+	  SGI Indigo2 Impact (SI/HI/MI) graphics card support.
+
 config BUS_I2C
 	bool
 	depends on (FB = y) && VISWS
@@ -1609,3 +1617,5 @@
 
 endmenu
 
+
+# Revision 1.36, Tue Apr 19 20:56:41 2005
diff -Nur linux-git/drivers/video/logo/Kconfig linux-git-mit-R10k-patches/drivers/video/logo/Kconfig
--- linux-git/drivers/video/logo/Kconfig	2005-10-15 16:01:26.000000000 +0200
+++ linux-git-mit-R10k-patches/drivers/video/logo/Kconfig	2005-10-16 13:22:04.000000000 +0200
@@ -40,7 +40,7 @@
 
 config LOGO_SGI_CLUT224
 	bool "224-color SGI Linux logo"
-	depends on LOGO && (SGI_IP22 || SGI_IP27 || SGI_IP32 || X86_VISWS)
+	depends on LOGO && (SGI_IP22 || SGI_IP27 || SGI_IP28 || SGI_IP32 || X86_VISWS)
 	default y
 
 config LOGO_SUN_CLUT224
diff -Nur linux-git/drivers/video/Makefile linux-git-mit-R10k-patches/drivers/video/Makefile
--- linux-git/drivers/video/Makefile	2005-10-15 16:01:25.000000000 +0200
+++ linux-git-mit-R10k-patches/drivers/video/Makefile	2005-10-16 13:45:33.000000000 +0200
@@ -94,6 +94,7 @@
 obj-$(CONFIG_FB_MAXINE)		  += maxinefb.o
 obj-$(CONFIG_FB_TX3912)		  += tx3912fb.o
 obj-$(CONFIG_FB_S1D13XXX)	  += s1d13xxxfb.o
+obj-$(CONFIG_FB_IMPACT)		  += impact.o
 obj-$(CONFIG_FB_IMX)              += imxfb.o
 obj-$(CONFIG_FB_SMIVGX)		  += smivgxfb.o
 obj-$(CONFIG_FB_S3C2410)	  += s3c2410fb.o
@@ -105,3 +106,5 @@
 
 # the test framebuffer is last
 obj-$(CONFIG_FB_VIRTUAL)          += vfb.o
+
+# Revision 1.89, Tue Apr 19 20:56:41 2005
diff -Nur linux-git/fs/partitions/Kconfig linux-git-mit-R10k-patches/fs/partitions/Kconfig
--- linux-git/fs/partitions/Kconfig	2005-10-15 16:01:30.000000000 +0200
+++ linux-git-mit-R10k-patches/fs/partitions/Kconfig	2005-10-16 13:22:04.000000000 +0200
@@ -188,7 +188,7 @@
 
 config SGI_PARTITION
 	bool "SGI partition support" if PARTITION_ADVANCED
-	default y if (SGI_IP22 || SGI_IP27 || ((MACH_JAZZ || SNI_RM200_PCI) && !CPU_LITTLE_ENDIAN))
+	default y if (SGI_IP22 || SGI_IP27 || SGI_IP28 || ((MACH_JAZZ || SNI_RM200_PCI) && !CPU_LITTLE_ENDIAN))
 	help
 	  Say Y here if you would like to be able to read the hard disk
 	  partition table format used by SGI machines.
diff -Nur linux-git/include/asm-mips/addrspace.h linux-git-mit-R10k-patches/include/asm-mips/addrspace.h
--- linux-git/include/asm-mips/addrspace.h	2005-10-15 16:01:33.000000000 +0200
+++ linux-git-mit-R10k-patches/include/asm-mips/addrspace.h	2005-10-16 13:58:45.000000000 +0200
@@ -53,6 +53,16 @@
 
 #ifdef CONFIG_64BIT
 
+static inline unsigned long kernel_physaddr(unsigned long kva)
+{
+	if((kva&0xffffffff80000000UL)==0xffffffff80000000UL)
+		return CPHYSADDR(kva);
+	return XPHYSADDR(kva);
+}
+#else
+#define kernel_physaddr CPHYSADDR
+#endif
+
 /*
  * Memory segments (64bit kernel mode addresses)
  * The compatibility segments use the full 64-bit sign extended value.  Note
@@ -108,14 +118,14 @@
 /*
  * Cache modes for XKPHYS address conversion macros
  */
-#define K_CALG_COH_EXCL1_NOL2	0
-#define K_CALG_COH_SHRL1_NOL2	1
-#define K_CALG_UNCACHED		2
-#define K_CALG_NONCOHERENT	3
-#define K_CALG_COH_EXCL		4
-#define K_CALG_COH_SHAREABLE	5
-#define K_CALG_NOTUSED		6
-#define K_CALG_UNCACHED_ACCEL	7
+#define K_CALG_COH_EXCL1_NOL2	0L
+#define K_CALG_COH_SHRL1_NOL2	1L
+#define K_CALG_UNCACHED		2L
+#define K_CALG_NONCOHERENT	3L
+#define K_CALG_COH_EXCL		4L
+#define K_CALG_COH_SHAREABLE	5L
+#define K_CALG_NOTUSED		6L
+#define K_CALG_UNCACHED_ACCEL	7L
 
 /*
  * 64-bit address conversions
@@ -199,3 +209,7 @@
 #define PHYS_TO_K0(x)		(_ACAST64_ (x) | CAC_BASE)
 
 #endif /* _ASM_ADDRSPACE_H */
+/*
+ * Revision 1.15, Mon Dec 27 03:16:18 2004
+ * Jun/Dec 2004
+ */
diff -Nur linux-git/include/asm-mips/dma.h linux-git-mit-R10k-patches/include/asm-mips/dma.h
--- linux-git/include/asm-mips/dma.h	2005-10-15 16:01:33.000000000 +0200
+++ linux-git-mit-R10k-patches/include/asm-mips/dma.h	2005-10-16 13:22:04.000000000 +0200
@@ -83,10 +83,13 @@
  * Deskstations or Acer PICA but not the much more versatile DMA logic used
  * for the local devices on Acer PICA or Magnums.
  */
-#ifdef CONFIG_SGI_IP22
+#if defined(CONFIG_SGI_IP22)
 /* Horrible hack to have a correct DMA window on IP22 */
 #include <asm/sgi/mc.h>
 #define MAX_DMA_ADDRESS		(PAGE_OFFSET + SGIMC_SEG0_BADDR + 0x01000000)
+#elif defined(CONFIG_SGI_IP28)
+#include <asm/sgi/mc.h>
+#define MAX_DMA_ADDRESS		(PAGE_OFFSET + SGIMC_SEG1_BADDR + 0x01000000)
 #else
 #define MAX_DMA_ADDRESS		(PAGE_OFFSET + 0x01000000)
 #endif
@@ -311,3 +314,7 @@
 #endif
 
 #endif /* _ASM_DMA_H */
+/*
+ * Revision 1.14, Tue Jul 29 03:21:47 2003
+ * Sun Jun 13 01:04:27 2004	- IP28
+ */
diff -Nur linux-git/include/asm-mips/io.h linux-git-mit-R10k-patches/include/asm-mips/io.h
--- linux-git/include/asm-mips/io.h	2005-10-15 16:01:33.000000000 +0200
+++ linux-git-mit-R10k-patches/include/asm-mips/io.h	2005-10-16 13:22:04.000000000 +0200
@@ -63,7 +63,7 @@
 
 # define ioswabb(x)		(x)
 # define mem_ioswabb(x)		(x)
-# ifdef CONFIG_SGI_IP22
+# if defined(CONFIG_SGI_IP22) || defined(CONFIG_SGI_IP28)
 /*
  * IP22 seems braindead enough to swap 16bits values in hardware, but
  * not 32bits.  Go figure... Can't tell without documentation.
diff -Nur linux-git/include/asm-mips/mach-ip28/cpu-feature-overrides.h linux-git-mit-R10k-patches/include/asm-mips/mach-ip28/cpu-feature-overrides.h
--- linux-git/include/asm-mips/mach-ip28/cpu-feature-overrides.h	1970-01-01 01:00:00.000000000 +0100
+++ linux-git-mit-R10k-patches/include/asm-mips/mach-ip28/cpu-feature-overrides.h	2005-10-16 13:22:04.000000000 +0200
@@ -0,0 +1,41 @@
+/*
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ * Copyright (C) 2003 Ralf Baechle
+ * 6/2004	pf
+ */
+#ifndef __ASM_MACH_IP28_CPU_FEATURE_OVERRIDES_H
+#define __ASM_MACH_IP28_CPU_FEATURE_OVERRIDES_H
+
+/*
+ * IP28 only comes with R10000 family processors all using the same config
+ */
+#define cpu_has_watch		1
+#define cpu_has_mips16		0
+#define cpu_has_divec		0
+#define cpu_has_vce		0
+#define cpu_has_cache_cdex_p	0
+#define cpu_has_cache_cdex_s	0
+#define cpu_has_prefetch	1
+#define cpu_has_mcheck		0
+#define cpu_has_ejtag		0
+
+#define cpu_has_llsc		1
+#define cpu_has_vtag_icache	0
+#define cpu_has_dc_aliases	0 /* see probe_pcache() */
+#define cpu_has_ic_fills_f_dc	0
+
+#define cpu_has_nofpuex		0
+#define cpu_has_64bits		1
+
+#define cpu_has_subset_pcaches	1
+
+#define cpu_dcache_line_size()	32
+#define cpu_icache_line_size()	64
+/* we better read it from COP0 $16 (SCBlkSize bit), can be 128 or 64
+#define cpu_scache_line_size()	128
+*/
+
+#endif /* __ASM_MACH_IP28_CPU_FEATURE_OVERRIDES_H */
diff -Nur linux-git/include/asm-mips/mach-ip28/ds1286.h linux-git-mit-R10k-patches/include/asm-mips/mach-ip28/ds1286.h
--- linux-git/include/asm-mips/mach-ip28/ds1286.h	1970-01-01 01:00:00.000000000 +0100
+++ linux-git-mit-R10k-patches/include/asm-mips/mach-ip28/ds1286.h	2005-10-16 13:22:04.000000000 +0200
@@ -0,0 +1,4 @@
+#ifndef __ASM_MACH_IP28_DS1286_H
+#define __ASM_MACH_IP28_DS1286_H
+#include <asm/mach-ip22/ds1286.h>
+#endif /* __ASM_MACH_IP28_DS1286_H */
diff -Nur linux-git/include/asm-mips/mach-ip28/spaces.h linux-git-mit-R10k-patches/include/asm-mips/mach-ip28/spaces.h
--- linux-git/include/asm-mips/mach-ip28/spaces.h	1970-01-01 01:00:00.000000000 +0100
+++ linux-git-mit-R10k-patches/include/asm-mips/mach-ip28/spaces.h	2005-10-16 13:22:04.000000000 +0200
@@ -0,0 +1,29 @@
+/*
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ * Copyright (C) 1994 - 1999, 2000, 03, 04 Ralf Baechle
+ * Copyright (C) 2000, 2002  Maciej W. Rozycki
+ * Copyright (C) 1990, 1999, 2000 Silicon Graphics, Inc.
+ * 2004	pf
+ */
+#ifndef _ASM_MACH_IP28_SPACES_H
+#define _ASM_MACH_IP28_SPACES_H
+
+#include <linux/config.h>
+
+#define CAC_BASE		0xa800000000000000
+#define IO_BASE			0x9000000000000000
+#define UNCAC_BASE		0x9000000000000000
+#define MAP_BASE		0xc000000000000000
+
+#define TO_PHYS(x)		(             ((x) & TO_PHYS_MASK))
+#define TO_CAC(x)		(CAC_BASE   | ((x) & TO_PHYS_MASK))
+#define TO_UNCAC(x)		(UNCAC_BASE | ((x) & TO_PHYS_MASK))
+
+#define PAGE_OFFSET		CAC_BASE
+
+#define HIGHMEM_START		(~0UL)
+
+#endif /* _ASM_MACH_IP28_SPACES_H */
diff -Nur linux-git/include/asm-mips/sgi/ioc.h linux-git-mit-R10k-patches/include/asm-mips/sgi/ioc.h
--- linux-git/include/asm-mips/sgi/ioc.h	2005-10-15 16:01:34.000000000 +0200
+++ linux-git-mit-R10k-patches/include/asm-mips/sgi/ioc.h	2005-10-16 13:48:36.000000000 +0200
@@ -138,8 +138,8 @@
 	u8 _sysid[3];
 	volatile u8 sysid;
 #define SGIOC_SYSID_FULLHOUSE	0x01
-#define SGIOC_SYSID_BOARDREV(x)	((x & 0xe0) > 5)
-#define SGIOC_SYSID_CHIPREV(x)	((x & 0x1e) > 1)
+#define SGIOC_SYSID_BOARDREV(x)	(((x) & 0x1e) >> 1)
+#define SGIOC_SYSID_CHIPREV(x)	(((x) & 0xe0) >> 5)
 	u32 _unused2;
 	u8 _read[3];
 	volatile u8 read;
@@ -198,3 +198,7 @@
 extern struct sgint_regs *sgint;
 
 #endif
+/*
+ * Revision 1.8, Sat Sep 25 14:20:00 2004
+ * May 2004	pf	- SYSID
+ */
diff -Nur linux-git/include/asm-mips/sgi/mc.h linux-git-mit-R10k-patches/include/asm-mips/sgi/mc.h
--- linux-git/include/asm-mips/sgi/mc.h	2005-10-15 16:01:34.000000000 +0200
+++ linux-git-mit-R10k-patches/include/asm-mips/sgi/mc.h	2005-10-16 13:22:04.000000000 +0200
@@ -227,5 +227,11 @@
 #define SGIMC_SEG1_SIZE_IP26_IP28	0x20000000 /* 512MB */
 
 extern void sgimc_init(void);
+extern unsigned long ip2628_enable_ucmem(void);
+extern void ip2628_return_ucmem(unsigned long);
 
 #endif /* _SGI_MC_H */
+/*
+ * Revision 1.4, Mon Jun 16 13:54:54 2003
+ * Wed Jun 16 13:54:54 2004 pf	- IP28
+ */
diff -Nur linux-git/include/asm-mips/stackframe.h linux-git-mit-R10k-patches/include/asm-mips/stackframe.h
--- linux-git/include/asm-mips/stackframe.h	2005-10-15 16:01:34.000000000 +0200
+++ linux-git-mit-R10k-patches/include/asm-mips/stackframe.h	2005-10-16 13:22:04.000000000 +0200
@@ -351,3 +351,7 @@
 		.endm
 
 #endif /* _ASM_STACKFRAME_H */
+/*
+ * Revision 1.37, Tue Apr 19 21:26:28 2005
+ * May 2004	pf	- xkphys kernel addresses
+ */
Binärdateien linux-git/include/asm-mips/.stackframe.h.rej.swp and linux-git-mit-R10k-patches/include/asm-mips/.stackframe.h.rej.swp sind verschieden.
diff -Nur linux-git/include/asm-mips/war.h linux-git-mit-R10k-patches/include/asm-mips/war.h
--- linux-git/include/asm-mips/war.h	2005-10-15 16:01:34.000000000 +0200
+++ linux-git-mit-R10k-patches/include/asm-mips/war.h	2005-10-16 13:22:04.000000000 +0200
@@ -194,6 +194,10 @@
 #ifdef CONFIG_SGI_IP27
 #define R10000_LLSC_WAR 1
 #endif
+/* Branch-likely and friends won't hurt a weird uniprocessor system either */
+#ifdef CONFIG_SGI_IP28
+#define R10000_LLSC_WAR 1
+#endif
 
 /*
  * Workarounds default to off
@@ -236,3 +240,7 @@
 #endif
 
 #endif /* _ASM_WAR_H */
+/*
+ * Revision 1.19, Tue Aug 17 17:49:44 2004
+ * Sun Dec  5 23:28:19 2004	- ip28 cache barrier
+ */
diff -Nur linux-git/include/linux/fb.h linux-git-mit-R10k-patches/include/linux/fb.h
--- linux-git/include/linux/fb.h	2005-10-15 16:01:35.000000000 +0200
+++ linux-git-mit-R10k-patches/include/linux/fb.h	2005-10-16 13:22:04.000000000 +0200
@@ -118,6 +118,7 @@
 #define FB_ACCEL_NEOMAGIC_NM2230 96	/* NeoMagic NM2230              */
 #define FB_ACCEL_NEOMAGIC_NM2360 97	/* NeoMagic NM2360              */
 #define FB_ACCEL_NEOMAGIC_NM2380 98	/* NeoMagic NM2380              */
+#define FB_ACCEL_SGI_IMPACT     333	/* SGI IMPACT graphics          */
 
 #define FB_ACCEL_SAVAGE4        0x80	/* S3 Savage4                   */
 #define FB_ACCEL_SAVAGE3D       0x81	/* S3 Savage3D                  */
@@ -948,3 +949,6 @@
 #endif /* __KERNEL__ */
 
 #endif /* _LINUX_FB_H */
+/*
+ * Revision 1.55, Tue Apr 19 21:33:27 2005
+ */
diff -Nur linux-git/include/video/impact.h linux-git-mit-R10k-patches/include/video/impact.h
--- linux-git/include/video/impact.h	1970-01-01 01:00:00.000000000 +0100
+++ linux-git-mit-R10k-patches/include/video/impact.h	2005-10-16 13:22:04.000000000 +0200
@@ -0,0 +1,181 @@
+/*
+ *  linux/drivers/video/impactsr.h -- SGI Octane MardiGras (IMPACTSR) graphics
+ *  linux/include/video/impact.h   -- SGI Indigo2 MardiGras (IMPACT) graphics
+ *
+ *  Copyright (c) 2004 by Stanislaw Skowronek
+ *  Hacked for Indigo2 by pf, 2005
+ *
+ *  This file is subject to the terms and conditions of the GNU General Public
+ *  License. See the file COPYING in the main directory of this archive for
+ *  more details.
+ */
+
+#ifndef IMPACT_H
+#define IMPACT_H
+
+/* Convenient access macros */
+#define IMPACT_REG64(vma,off)		(*(volatile unsigned long *)((vma)+(off)))
+#define IMPACT_REG32(vma,off)		(*(volatile unsigned int *)((vma)+(off)))
+#define IMPACT_REG16(vma,off)		(*(volatile unsigned short *)((vma)+(off)))
+#define IMPACT_REG8(vma,off)		(*(volatile unsigned char *)((vma)+(off)))
+
+#if defined(CONFIG_SGI_IP28)||defined(CONFIG_SGI_IP26)||defined(CONFIG_SGI_IP22)
+/* Impact (HQ3) register offsets */
+
+#define IMPACT_CFIFO(vma)		IMPACT_REG64(vma,0x70080)
+#define IMPACT_CFIFOW(vma)		IMPACT_REG32(vma,0x70080)
+#define IMPACT_CFIFOP(vma)		IMPACT_REG64(vma,0x50080)
+#define IMPACT_CFIFOPW(vma)		IMPACT_REG32(vma,0x50080)
+
+#define IMPACT_STATUS(vma)		IMPACT_REG32(vma,0x70000)
+#define IMPACT_FIFOSTATUS(vma)	IMPACT_REG32(vma,0x70004)
+#define IMPACT_GIOSTATUS(vma)		IMPACT_REG32(vma,0x70100)
+#define IMPACT_DMABUSY(vma)		IMPACT_REG32(vma,0x70104)
+
+#define IMPACT_CFIFO_HW(vma)		IMPACT_REG32(vma,0x50020)
+#define IMPACT_CFIFO_LW(vma)		IMPACT_REG32(vma,0x50024)
+#define IMPACT_CFIFO_DELAY(vma)	IMPACT_REG32(vma,0x50028)
+#define IMPACT_DFIFO_HW(vma)		IMPACT_REG32(vma,0x5002c)
+#define IMPACT_DFIFO_LW(vma)		IMPACT_REG32(vma,0x50030)
+#define IMPACT_DFIFO_DELAY(vma)	IMPACT_REG32(vma,0x50034)
+
+#define X40918	0x50918
+#define X40920	0x50920
+#define X40928	0x50928
+#define IMPACT_XMAP_OFF(off)	(0x61c00+(off))
+#define IMPACT_VC3_OFF(off)	(0x62000+(off))
+#define IMPACT_RSS_OFF(off)	(0x7c000+(off))
+
+#else /* ImpactSR (HQ4) register offsets */
+
+#define IMPACT_CFIFO(vma)		IMPACT_REG64(vma,0x20400)
+#define IMPACT_CFIFOW(vma)		IMPACT_REG32(vma,0x20400)
+#define IMPACT_CFIFOP(vma)		IMPACT_REG64(vma,0x130400)
+#define IMPACT_CFIFOPW(vma)		IMPACT_REG32(vma,0x130400)
+
+#define IMPACT_STATUS(vma)		IMPACT_REG32(vma,0x20000)
+#define IMPACT_FIFOSTATUS(vma)	IMPACT_REG32(vma,0x20008)
+#define IMPACT_GIOSTATUS(vma)		IMPACT_REG32(vma,0x20100)
+#define IMPACT_DMABUSY(vma)		IMPACT_REG32(vma,0x20200)
+
+#define IMPACT_CFIFO_HW(vma)		IMPACT_REG32(vma,0x40000)
+#define IMPACT_CFIFO_LW(vma)		IMPACT_REG32(vma,0x40008)
+#define IMPACT_CFIFO_DELAY(vma)	IMPACT_REG32(vma,0x40010)
+#define IMPACT_DFIFO_HW(vma)		IMPACT_REG32(vma,0x40020)
+#define IMPACT_DFIFO_LW(vma)		IMPACT_REG32(vma,0x40028)
+#define IMPACT_DFIFO_DELAY(vma)	IMPACT_REG32(vma,0x40030)
+
+#define X40918	0x40918
+#define X40920	0x40920
+#define X40928	0x40928
+#define IMPACT_XMAP_OFF(off)	(0x71c00+(off))
+#define IMPACT_VC3_OFF(off)	(0x72000+(off))
+#define IMPACT_RSS_OFF(off)	(0x2c000+(off))
+
+#endif
+
+#define IMPACT_RESTATUS(vma)		IMPACT_REG32(vma,IMPACT_RSS_OFF(0x578))
+
+#define IMPACT_XMAP_PP1SELECT(vma)	IMPACT_REG8(vma,IMPACT_XMAP_OFF(0x008))
+#define IMPACT_XMAP_INDEX(vma)	IMPACT_REG8(vma,IMPACT_XMAP_OFF(0x088))
+#define IMPACT_XMAP_CONFIG(vma)	IMPACT_REG32(vma,IMPACT_XMAP_OFF(0x100))
+#define IMPACT_XMAP_CONFIGB(vma)	IMPACT_REG8(vma,IMPACT_XMAP_OFF(0x108))
+#define IMPACT_XMAP_BUF_SELECT(vma)	IMPACT_REG32(vma,IMPACT_XMAP_OFF(0x180))
+#define IMPACT_XMAP_MAIN_MODE(vma)	IMPACT_REG32(vma,IMPACT_XMAP_OFF(0x200))
+#define IMPACT_XMAP_OVERLAY_MODE(vma)	IMPACT_REG32(vma,IMPACT_XMAP_OFF(0x280))
+#define IMPACT_XMAP_DIB(vma)		IMPACT_REG32(vma,IMPACT_XMAP_OFF(0x300))
+#define IMPACT_XMAP_DIB_DW(vma)	IMPACT_REG32(vma,IMPACT_XMAP_OFF(0x340))
+#define IMPACT_XMAP_RE_RAC(vma)	IMPACT_REG32(vma,IMPACT_XMAP_OFF(0x380))
+
+#define IMPACT_VC3_INDEX(vma)		IMPACT_REG8(vma,IMPACT_VC3_OFF(0x008))
+#define IMPACT_VC3_INDEXDATA(vma)	IMPACT_REG32(vma,IMPACT_VC3_OFF(0x038))
+#define IMPACT_VC3_DATA(vma)		IMPACT_REG16(vma,IMPACT_VC3_OFF(0x0b0))
+#define IMPACT_VC3_RAM(vma)		IMPACT_REG16(vma,IMPACT_VC3_OFF(0x190))
+
+/* FIFO status */
+#if defined(CONFIG_SGI_IP28)||defined(CONFIG_SGI_IP26)||defined(CONFIG_SGI_IP22)
+#define IMPACT_CFIFO_MAX		64
+#else
+#define IMPACT_CFIFO_MAX		128
+#endif
+#define IMPACT_BFIFO_MAX		16
+
+/* Commands for CFIFO */
+#define IMPACT_CMD_WRITERSS(reg,val)\
+	(((0x00180004L|((reg)<<8))<<32)|(unsigned)(val))
+#define IMPACT_CMD_EXECRSS(reg,val)\
+	(((0x001c0004L|((reg)<<8))<<32)|(unsigned)(val))
+
+#define IMPACT_CMD_GLINE_XSTARTF(v)	IMPACT_CMD_WRITERSS(0x00c,v)
+#define IMPACT_CMD_IR_ALIAS(v)	IMPACT_CMD_EXECRSS(0x045,v)
+#define IMPACT_CMD_BLOCKXYSTARTI(x,y)	IMPACT_CMD_WRITERSS(0x046,((x)<<16)|(y))
+#define IMPACT_CMD_BLOCKXYENDI(x,y)	IMPACT_CMD_WRITERSS(0x047,((x)<<16)|(y))
+#define IMPACT_CMD_PACKEDCOLOR(v)	IMPACT_CMD_WRITERSS(0x05b,v)
+#define IMPACT_CMD_RED(v)		IMPACT_CMD_WRITERSS(0x05c,v)
+#define IMPACT_CMD_ALPHA(v)		IMPACT_CMD_WRITERSS(0x05f,v)
+#define IMPACT_CMD_CHAR(v)		IMPACT_CMD_EXECRSS(0x070,v)
+#define IMPACT_CMD_CHAR_H(v)		IMPACT_CMD_WRITERSS(0x070,v)
+#define IMPACT_CMD_CHAR_L(v)		IMPACT_CMD_EXECRSS(0x071,v)
+#define IMPACT_CMD_XFRCONTROL(v)	IMPACT_CMD_WRITERSS(0x102,v)
+#define IMPACT_CMD_FILLMODE(v)	IMPACT_CMD_WRITERSS(0x110,v)
+#define IMPACT_CMD_CONFIG(v)		IMPACT_CMD_WRITERSS(0x112,v)
+#define IMPACT_CMD_XYWIN(x,y)		IMPACT_CMD_WRITERSS(0x115,((y)<<16)|(x))
+#define IMPACT_CMD_BKGRD_RG(v)	IMPACT_CMD_WRITERSS(0x140,((v)<<8))
+#define IMPACT_CMD_BKGRD_BA(v)	IMPACT_CMD_WRITERSS(0x141,((v)<<8))
+#define IMPACT_CMD_WINMODE(v)		IMPACT_CMD_WRITERSS(0x14f,v)
+#define IMPACT_CMD_XFRSIZE(x,y)	IMPACT_CMD_WRITERSS(0x153,((y)<<16)|(x))
+#define IMPACT_CMD_XFRMASKLO(v)	IMPACT_CMD_WRITERSS(0x156,v)
+#define IMPACT_CMD_XFRMASKHI(v)	IMPACT_CMD_WRITERSS(0x157,v)
+#define IMPACT_CMD_XFRCOUNTERS(x,y)	IMPACT_CMD_WRITERSS(0x158,((y)<<16)|(x))
+#define IMPACT_CMD_XFRMODE(v)		IMPACT_CMD_WRITERSS(0x159,v)
+#define IMPACT_CMD_RE_TOGGLECNTX(v)	IMPACT_CMD_WRITERSS(0x15f,v)
+#define IMPACT_CMD_PIXCMD(v)		IMPACT_CMD_WRITERSS(0x160,v)
+#define IMPACT_CMD_PP1FILLMODE(m,o)	IMPACT_CMD_WRITERSS(0x161,(m)|(o<<26))
+#define IMPACT_CMD_COLORMASKMSBS(v)	IMPACT_CMD_WRITERSS(0x162,v)
+#define IMPACT_CMD_COLORMASKLSBSA(v)	IMPACT_CMD_WRITERSS(0x163,v)
+#define IMPACT_CMD_COLORMASKLSBSB(v)	IMPACT_CMD_WRITERSS(0x164,v)
+#define IMPACT_CMD_BLENDFACTOR(v)	IMPACT_CMD_WRITERSS(0x165,v)
+#define IMPACT_CMD_DRBPOINTERS(v)	IMPACT_CMD_WRITERSS(0x16d,v)
+
+#define	IMPACT_CMD_HQ_PIXELFORMAT(v)	(0x000c000400000000L|(unsigned)(v))
+#define	IMPACT_CMD_HQ_SCANWIDTH(v)	(0x000a020400000000L|(unsigned)(v))
+#define	IMPACT_CMD_HQ_DMATYPE(v)	(0x000a060400000000L|(unsigned)(v))
+#define	IMPACT_CMD_HQ_PG_LIST_0(v)	(0x0008000400000000L|(unsigned)(v))
+#define	IMPACT_CMD_HQ_PG_WIDTH(v)	(0x0008040400000000L|(unsigned)(v))
+#define	IMPACT_CMD_HQ_PG_OFFSET(v)	(0x0008050400000000L|(unsigned)(v))
+#define	IMPACT_CMD_HQ_PG_STARTADDR(v)	(0x0008060400000000L|(unsigned)(v))
+#define	IMPACT_CMD_HQ_PG_LINECNT(v)	(0x0008070400000000L|(unsigned)(v))
+#define	IMPACT_CMD_HQ_PG_WIDTHA(v)	(0x0008080400000000L|(unsigned)(v))
+#define IMPACT_CMD_HQ_TXBASE(p)	(0x00482008|((p)<<9))
+#define IMPACT_CMD_HQ_TXMAX(p,v)\
+	(0x0048300400000000L|(unsigned)(v)|((unsigned long)(p)<<41))
+#define IMPACT_CMD_HQ_PGBITS(p,v)\
+	(0x00482b0400000000L|(unsigned)(v)|((unsigned long)(p)<<41))
+#define IMPACT_CMD_HQ_PGSIZE(v)	(0x00482a0400000000L|(unsigned)(v))
+#define IMPACT_CMD_HQ_STACKPTR(v)	(0x00483a0400000000L|(unsigned)(v))
+
+/* Logic operations for the PP1 (SI=source invert, DI=dest invert, RI=result invert) */
+#define IMPACT_LO_CLEAR	0
+#define IMPACT_LO_AND		1
+#define IMPACT_LO_DIAND	2
+#define IMPACT_LO_COPY	3
+#define IMPACT_LO_SIAND	4
+#define IMPACT_LO_NOP		5
+#define IMPACT_LO_XOR		6
+#define IMPACT_LO_OR		7
+#define IMPACT_LO_RIOR	8
+#define IMPACT_LO_RIXOR	9
+#define IMPACT_LO_RINOP	10
+#define IMPACT_LO_DIOR	11
+#define IMPACT_LO_RICOPY	12
+#define IMPACT_LO_SIOR	13
+#define IMPACT_LO_RIAND	14
+#define IMPACT_LO_SET		15
+
+/* Blending factors */
+#define IMPACT_BLEND_ALPHA	0x0704c900
+
+#endif /* IMPACT_H */
+/*
+ * Fri Mar 18 21:42:10 2005
+ */
diff -Nur linux-git/sound/oss/Kconfig linux-git-mit-R10k-patches/sound/oss/Kconfig
--- linux-git/sound/oss/Kconfig	2005-10-15 16:01:40.000000000 +0200
+++ linux-git-mit-R10k-patches/sound/oss/Kconfig	2005-10-16 19:24:17.000000000 +0200
@@ -199,10 +199,10 @@
 
 config SOUND_HAL2
 	tristate "SGI HAL2 sound (EXPERIMENTAL)"
-	depends on SOUND_PRIME && SGI_IP22 && EXPERIMENTAL
+	depends on SOUND_PRIME && (SGI_IP22 || SGI_IP28) && EXPERIMENTAL
 	help
-	  Say Y or M if you have an SGI Indy system and want to be able to
-	  use it's on-board A2 audio system
+	  Say Y or M if you have an SGI Indy or Indigo2 system and want to
+	  be able to use it's on-board A2 audio system
 
 config SOUND_IT8172
 	tristate "IT8172G Sound"

--AhhlLboLdkugWU4S
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="stackframe.h.patch"

diff -Nau cvs-/include/asm-mips/stackframe.h ip28/include/asm-mips/stackframe.h
--- cvs-/include/asm-mips/stackframe.h	Tue Apr 19 21:26:28 2005
+++ ip28/include/asm-mips/stackframe.h	Tue Apr 26 23:48:41 2005
@@ -107,12 +107,37 @@
 		.endm
 #else
 		.macro	get_saved_sp	/* Uniprocessor variation */
+# ifdef CONFIG_XKPHYS_KERNEL
+		/*
+		 * Beware!
+		 * 1) This is called, before $at is saved, so the
+		 *    assembler MUST NOT use $at.
+		 * 2) k1 and any implicitely used k0 are not saved. Thus
+		 *    this MUST NOT be called with interrupts enabled.
+		 *    (applies as well to the ckseg version below)
+		 */
+		.set	push
+		.set	noat
+		dla	k1, kernelsp
+		LONG_L	k1, (k1)
+		.set	pop
+# else
 		lui	k1, %hi(kernelsp)
 		LONG_L	k1, %lo(kernelsp)(k1)
+# endif
 		.endm
 
 		.macro	set_saved_sp stackp temp temp2
+		/*
+		 * Beware!  This is called with interrupts enabled, so
+		 * make sure the assembler generated code-sequence only
+		 * uses registers ($at), that will be saved/restored
+		 * (especially true for elf64-.. format).
+		 */
+		/* .set	push */
+		/* .set	at   */
 		LONG_S	\stackp, kernelsp
+		/* .set	pop  */
 		.endm
 #endif
 
@@ -349,1 +374,5 @@
 #endif /* _ASM_STACKFRAME_H */
+/*
+ * Revision 1.37, Tue Apr 19 21:26:28 2005
+ * May 2004	pf	- xkphys kernel addresses
+ */

--AhhlLboLdkugWU4S--

From pf@net.alphadv.de Sun Oct 16 19:36:02 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Sun, 16 Oct 2005 19:36:19 +0100 (BST)
Received: from mail.alphastar.de ([194.59.236.179]:2568 "EHLO
	mail.alphastar.de") by ftp.linux-mips.org with ESMTP
	id S8133412AbVJPSgC convert rfc822-to-8bit (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Sun, 16 Oct 2005 19:36:02 +0100
Received: from SNaIlmail.Peter (217.249.225.149)
          by mail.alphastar.de with MERCUR Mailserver (v4.02.28 MTIxLTIxODAtNjY2OA==)
          for <linux-mips@linux-mips.org>; Sun, 16 Oct 2005 20:33:05 +0200
Received: from Opal.Peter (Opal.Peter [192.168.1.1])
	by SNaIlmail.Peter (8.12.6/8.12.6/Sendmail/Linux 2.0.32) with ESMTP id j9GIY6N8000552;
	Sun, 16 Oct 2005 20:34:07 +0200
Received: from Opal.Peter (localhost [127.0.0.1])
	by Opal.Peter (8.12.11.Beta0/8.12.11.Beta0/Sendmail/Linux 2.4.24-1-386) with ESMTP id j9GIXs97001586;
	Sun, 16 Oct 2005 20:33:54 +0200
Received: from localhost (pf@localhost)
	by Opal.Peter (8.12.11.Beta0/8.12.11.Beta0/Debian-1) with ESMTP id j9GIXrGY001582;
	Sun, 16 Oct 2005 20:33:54 +0200
Date:	Sun, 16 Oct 2005 20:33:53 +0200 (CEST)
From:	peter fuerst <pf@net.alphadv.de>
To:	linux-mips@linux-mips.org
cc:	karsten@excalibur.cologne.de
Subject: Re: I2-R10k patchset - help needed
In-Reply-To: <20051016180321.GA9993@excalibur.cologne.de>
Message-ID: <Pine.LNX.4.21.0510162020420.1578-100000@Opal.Peter>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=iso-8859-1
Content-Transfer-Encoding: 8BIT
Reply-To: pf@net.alphadv.de
Return-Path: <pf@net.alphadv.de>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9232
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: pf@net.alphadv.de
Precedence: bulk
X-list: linux-mips
Content-Length: 1677
Lines: 51



Sorry that the last patches caused problems.
I know that i'm late, unfortunately i let me seduce myself to play
around (this can take arbitrarely long :) with the DMA version of the
Impact-Xserver (which forced some changes to the kernel-driver) :(
At the latest tomorrow i'll deposit a new patch-set for 2.6.14
(a patch for stackframe.h is no longer contained/needed !) together
with the enhanced Xserver Impact-sources.

Hope, this promise compensates for the frustration.

pf



On Sun, 16 Oct 2005, Karsten Merker wrote:

> Date: Sun, 16 Oct 2005 20:03:21 +0200
> From: Karsten Merker <karsten@excalibur.cologne.de>
> Reply-To: linux-mips-bounce@linux-mips.org
> To: linux-mips@linux-mips.org
> Subject: I2-R10k patchset - help needed
> 
> Hallo everybody,
> 
> I am trying to get the current git tree running on an I2 R10k, so
> I applied Peter Fürsts patches from
> 
> http://home.alphastar.de/fuerst/download.html 
> 
> to it. As these are against 2.6.12-rc2, I got a bunch of rejects,
> which I have resolved manually, but I am stuck with the patch for
> include/asm-mips/stackframe.h.
> 
> I would be very grateful if somebody could take a look into this
> and provide an updated patch against the current kernel sources.
> Attached to this mail is both my version of Peter Fürsts
> "collected.diff" (applies cleanly against current git but without
> the stackframe.h-patch) as well as the original stackframe.h
> patch.
> 
> Regards,
> Karsten
> -- 
> #include <standard_disclaimer>
> Nach Paragraph 28 Abs. 3 Bundesdatenschutzgesetz widerspreche ich der Nutzung
> oder Uebermittlung meiner Daten fuer Werbezwecke oder fuer die Markt- oder
> Meinungsforschung.
> 


From karsten@excalibur.cologne.de Sun Oct 16 19:48:07 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Sun, 16 Oct 2005 19:48:25 +0100 (BST)
Received: from natsmtp00.rzone.de ([81.169.145.165]:8332 "EHLO
	natsmtp00.rzone.de") by ftp.linux-mips.org with ESMTP
	id S8133412AbVJPSsH (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Sun, 16 Oct 2005 19:48:07 +0100
Received: from excalibur.cologne.de (cable-84-44-248-18.netcologne.de [84.44.248.18])
	by post.webmailer.de (8.13.1/8.13.1) with ESMTP id j9GIm6vW028692
	for <linux-mips@linux-mips.org>; Sun, 16 Oct 2005 20:48:06 +0200 (MEST)
Received: from karsten by excalibur.cologne.de with local (Exim 3.36 #1 (Debian))
	id 1ERDYH-0002fF-00
	for <linux-mips@linux-mips.org>; Sun, 16 Oct 2005 20:48:09 +0200
Date:	Sun, 16 Oct 2005 20:48:09 +0200
From:	Karsten Merker <karsten@excalibur.cologne.de>
To:	linux-mips@linux-mips.org
Subject: Re: I2-R10k patchset - help needed
Message-ID: <20051016184809.GC9993@excalibur.cologne.de>
References: <20051016180321.GA9993@excalibur.cologne.de> <Pine.LNX.4.21.0510162020420.1578-100000@Opal.Peter>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <Pine.LNX.4.21.0510162020420.1578-100000@Opal.Peter>
X-No-Archive: yes
User-Agent: Mutt/1.5.9i
Return-Path: <karsten@excalibur.cologne.de>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9233
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: karsten@excalibur.cologne.de
Precedence: bulk
X-list: linux-mips
Content-Length: 592
Lines: 19

On Sun, Oct 16, 2005 at 08:33:53PM +0200, peter fuerst wrote:

> Sorry that the last patches caused problems.

No problem, I am very happy that you worked on R10k support.

> At the latest tomorrow i'll deposit a new patch-set for 2.6.14
> (a patch for stackframe.h is no longer contained/needed !) together
> with the enhanced Xserver Impact-sources.

Thanks a lot.

Regards,
Karsten
-- 
#include <standard_disclaimer>
Nach Paragraph 28 Abs. 3 Bundesdatenschutzgesetz widerspreche ich der Nutzung
oder Uebermittlung meiner Daten fuer Werbezwecke oder fuer die Markt- oder
Meinungsforschung.

From kumba@gentoo.org Sun Oct 16 19:51:51 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Sun, 16 Oct 2005 19:52:08 +0100 (BST)
Received: from sccrmhc12.comcast.net ([204.127.202.56]:18592 "EHLO
	sccrmhc12.comcast.net") by ftp.linux-mips.org with ESMTP
	id S8133412AbVJPSvv (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Sun, 16 Oct 2005 19:51:51 +0100
Received: from [192.168.1.4] (pcp0011842295pcs.waldrf01.md.comcast.net[69.251.97.45])
          by comcast.net (sccrmhc12) with ESMTP
          id <2005101618513601200gjcede>; Sun, 16 Oct 2005 18:51:41 +0000
Message-ID: <4352A133.6040902@gentoo.org>
Date:	Sun, 16 Oct 2005 14:51:31 -0400
From:	Kumba <kumba@gentoo.org>
User-Agent: Mozilla Thunderbird 1.0.5 (Windows/20050711)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	linux-mips@linux-mips.org
CC:	Karsten Merker <karsten@excalibur.cologne.de>
Subject: Re: I2-R10k patchset - help needed
References: <20051016180321.GA9993@excalibur.cologne.de>
In-Reply-To: <20051016180321.GA9993@excalibur.cologne.de>
Content-Type: multipart/mixed;
 boundary="------------030902050705030407050506"
Return-Path: <kumba@gentoo.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9234
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: kumba@gentoo.org
Precedence: bulk
X-list: linux-mips
Content-Length: 41890
Lines: 599

This is a multi-part message in MIME format.
--------------030902050705030407050506
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

Karsten Merker wrote:
> Hallo everybody,
> 
> I am trying to get the current git tree running on an I2 R10k, so
> I applied Peter Fürsts patches from
> 
> http://home.alphastar.de/fuerst/download.html 
> 
> to it. As these are against 2.6.12-rc2, I got a bunch of rejects,
> which I have resolved manually, but I am stuck with the patch for
> include/asm-mips/stackframe.h.
> 
> I would be very grateful if somebody could take a look into this
> and provide an updated patch against the current kernel sources.
> Attached to this mail is both my version of Peter Fürsts
> "collected.diff" (applies cleanly against current git but without
> the stackframe.h-patch) as well as the original stackframe.h
> patch.

It took me a few mins staring at the stackframe.h patch to determine that the 
bits Peter was trying to apply were already present in a similar, but different 
form.  Or atleast enough of it is to resolve whatever problem his patch attempts 
to correct, so I've omitted it in my runs.

Attached is the patch used in gentoo's mips-sources, which applies to 2.6.13.4 
(untested against 2.6.14-*) with some minor offsets.  Testing on 2.6.14 
shouldn't be difficult, especially since the stackframe.h isn't needed anymore.


--Kumba

-- 
Gentoo/MIPS Team Lead
Gentoo Foundation Board of Trustees

"Such is oft the course of deeds that move the wheels of the world: small hands 
do them because they must, while the eyes of the great are elsewhere."  --Elrond

--------------030902050705030407050506
Content-Type: application/octet-stream;
 name="misc-2.6.13-ip28-i2_impact-support.patch.bz2"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="misc-2.6.13-ip28-i2_impact-support.patch.bz2"

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
/iLuSKcKEgAOr4MA
--------------030902050705030407050506--

From ivy.mips@gmail.com Mon Oct 17 04:49:48 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 17 Oct 2005 04:50:06 +0100 (BST)
Received: from wproxy.gmail.com ([64.233.184.207]:6503 "EHLO wproxy.gmail.com")
	by ftp.linux-mips.org with ESMTP id S8133425AbVJQDts (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Mon, 17 Oct 2005 04:49:48 +0100
Received: by wproxy.gmail.com with SMTP id i3so393277wra
        for <linux-mips@linux-mips.org>; Sun, 16 Oct 2005 20:49:46 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references;
        b=O2SOYR4jueINKMvLWA6rQElpboIkJLprriQH/VjeEh1X0t5SRnXR066aVyzmzcT3c5x+ffzjj0lh8X1n8sXajAj8t+Dcfm9EG17KNn/cOQZ0hOT5yhqjqBpgY4ioSQlxxTLWTtahM6iUt/r/mdASfa93w+8BRS8h9mt02PaMVBo=
Received: by 10.54.79.14 with SMTP id c14mr1681111wrb;
        Sun, 16 Oct 2005 20:49:46 -0700 (PDT)
Received: by 10.54.79.15 with HTTP; Sun, 16 Oct 2005 20:49:46 -0700 (PDT)
Message-ID: <8a58e1120510162049v67eebfc8t853ec3afe3b9d778@mail.gmail.com>
Date:	Mon, 17 Oct 2005 09:19:46 +0530
From:	Ivy green <ivy.mips@gmail.com>
To:	Stuart Longland <redhatter@gentoo.org>
Subject: Re: Linux on BCM7038 ?.
Cc:	linux-mips@linux-mips.org
In-Reply-To: <43508FF5.7030306@gentoo.org>
MIME-Version: 1.0
Content-Type: multipart/alternative; 
	boundary="----=_Part_16932_7889155.1129520986556"
References: <8a58e1120510140631yd33f85dg3e3e9c993555726@mail.gmail.com>
	 <43508FF5.7030306@gentoo.org>
Return-Path: <ivy.mips@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9235
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ivy.mips@gmail.com
Precedence: bulk
X-list: linux-mips
Content-Length: 3802
Lines: 92

------=_Part_16932_7889155.1129520986556
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Hi all,

Thanks for you reply and info. Actually i had booted xscale ixp425 processo=
r
based ixdp425 Board ,using 2.4.x kernel. For that i downloaded 2.4.19 kerne=
l
from kernel.org <http://kernel.org> and got the patch from another website
(i forgot the link :( ). . I applied those patches on 2.4.19 kernel and
complied it, it works fine.. For bootloader , i used redboot. So i thought,
there would be some patches available for each MIPS based Platforms also.
I could make a tiny distribution using busybox, thats not all a problem ...
i would like to download source code from Linux/MIPS.org. I want to know, D=
o
i need any other patches to make this kernel running on BCM7038 Platform.
Please feel free to comment ;)

Thanks
Ivy



On 10/15/05, Stuart Longland <redhatter@gentoo.org> wrote:
>
> Ivy green wrote:
> > Hi folks,
> > Is there any Patches already available to apply on
> > kernel (>=3D 2.4.29) ?.
>
> kernel 2.4.29 from kernel.org <http://kernel.org>?? Or kernel 2.4.29 from
> Linux/MIPS.org?
>
> There's a difference... a _big_ difference.
> --
> Stuart Longland (aka Redhatter) .'''.
> Gentoo Linux/MIPS Cobalt and Docs Developer '.'` :
> . . . . . . . . . . . . . . . . . . . . . . .'.'
> http://dev.gentoo.org/~redhatter :.'
>
>
>

------=_Part_16932_7889155.1129520986556
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Hi all,<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;
Thanks for you reply and info. Actually i had booted xscale ixp425
processor based ixdp425 Board ,using 2.4.x kernel. For that i
downloaded 2.4.19 kernel from <a href=3D"http://kernel.org">kernel.org</a> =
and got the patch from another
website (i forgot the link&nbsp; :(&nbsp; ). .&nbsp; I applied those
patches on 2.4.19 kernel and complied it, it works fine.. For
bootloader , i used redboot.&nbsp; So i thought, there would be
some&nbsp; patches available for each MIPS based Platforms also.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
I could make a tiny distribution using busybox, thats not all a problem
... i would like to download source code from Linux/MIPS.org.&nbsp; I
want to know, Do i need any other patches&nbsp; to make this kernel
running on BCM7038 Platform.&nbsp; Please feel free to comment ;)<br>
<br>
Thanks <br>
Ivy <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp; <br>
<br><br><div><span class=3D"gmail_quote">On 10/15/05, <b class=3D"gmail_sen=
dername">Stuart Longland</b> &lt;<a href=3D"mailto:redhatter@gentoo.org">re=
dhatter@gentoo.org</a>&gt; wrote:</span><blockquote class=3D"gmail_quote" s=
tyle=3D"border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8e=
x; padding-left: 1ex;">
Ivy green wrote:<br>&gt; Hi folks,<br>&gt;&nbsp;&nbsp; Is there any Patches=
 already available to apply on<br>&gt; kernel (&gt;=3D 2.4.29) ?.<br><br>ke=
rnel 2.4.29 from <a href=3D"http://kernel.org">kernel.org</a>?? Or kernel 2=
.4.29 from Linux/MIPS.org?
<br><br>There's a difference... a _big_ difference.<br>--<br>Stuart Longlan=
d (aka Redhatter)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;.'''.<br>Gentoo Linux/MIPS Cobalt and Docs Develo=
per&nbsp;&nbsp;'.'` :<br>. . . . . . . . . . . . . . . . . . . . . .&nbsp;&=
nbsp; .'.'<br>
<a href=3D"http://dev.gentoo.org/~redhatter">http://dev.gentoo.org/~redhatt=
er</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp; :.'<br><br><br></blockquote></div><br>

------=_Part_16932_7889155.1129520986556--

From yallain@avilinks.com Mon Oct 17 09:52:17 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 17 Oct 2005 09:52:34 +0100 (BST)
Received: from paris5.amen.fr ([62.193.203.10]:23306 "EHLO paris5.amen.fr")
	by ftp.linux-mips.org with ESMTP id S8133452AbVJQIwR (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Mon, 17 Oct 2005 09:52:17 +0100
Received: from firewall (77.237.98-84.rev.gaoland.net [84.98.237.77])
	by paris5.amen.fr (8.10.2/8.10.2) with ESMTP id j9H8q7B21592
	for <linux-mips@linux-mips.org>; Mon, 17 Oct 2005 10:52:08 +0200
Message-ID: <4353656E.8070601@avilinks.com>
Date:	Mon, 17 Oct 2005 10:48:46 +0200
From:	Yoann Allain <yallain@avilinks.com>
Organization: Avilinks
User-Agent: Mozilla Thunderbird 1.0 (X11/20041206)
X-Accept-Language: fr, en
MIME-Version: 1.0
To:	linux-mips@linux-mips.org
Subject: sti() freezes the kernel
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Return-Path: <yallain@avilinks.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9236
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: yallain@avilinks.com
Precedence: bulk
X-list: linux-mips
Content-Length: 488
Lines: 13

Hi all,

I'm actually trying to start a 2.4 kernel on our new card.
The kernel freezes when enabling interrupts with sti() in start_kernel() 
(just before calculating BogoMips...).
This looks like an interrupts is up when enabling so that it stops the 
MIPS and freezes the kernel.
I'm looking after this interrupt but I would like to know if there could 
be any others reasons for my kernel to freeze when doing a call to sti();

Many thanks in advance for your suggestions...

@+ Yoann

From lhrkernelcoder@gmail.com Mon Oct 17 12:29:46 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 17 Oct 2005 12:30:04 +0100 (BST)
Received: from wproxy.gmail.com ([64.233.184.197]:28119 "EHLO wproxy.gmail.com")
	by ftp.linux-mips.org with ESMTP id S8133570AbVJQL3q (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Mon, 17 Oct 2005 12:29:46 +0100
Received: by wproxy.gmail.com with SMTP id i6so108677wra
        for <linux-mips@linux-mips.org>; Mon, 17 Oct 2005 04:29:44 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:message-id:date:from:to:subject:mime-version:content-type;
        b=mPUO6jsTNYQ1I/2JaSAqVEiAVXv42rvMo/sOG4+MR86aEXBPqAB4O7Hl/L097/KTMSV9Qcyh/4o/8QGHKXvEJNMbPVXqeEPzqsZIAzG9QYXVRS2TpXNR1hTIEE4kclGziCYtnWguuX/fVObyscAtdnXi4bLbeU3DXBYw7oTkbAw=
Received: by 10.54.125.1 with SMTP id x1mr1762758wrc;
        Mon, 17 Oct 2005 04:29:44 -0700 (PDT)
Received: by 10.54.146.11 with HTTP; Mon, 17 Oct 2005 04:29:44 -0700 (PDT)
Message-ID: <f69849430510170429t2735ed0fo3caa862c1dfea83a@mail.gmail.com>
Date:	Mon, 17 Oct 2005 04:29:44 -0700
From:	kernel coder <lhrkernelcoder@gmail.com>
To:	linux-mips@linux-mips.org
Subject: How to improve performance of 2.6 kernel
MIME-Version: 1.0
Content-Type: multipart/mixed; 
	boundary="----=_Part_19809_32883783.1129548584420"
Return-Path: <lhrkernelcoder@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9237
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: lhrkernelcoder@gmail.com
Precedence: bulk
X-list: linux-mips
Content-Length: 150601
Lines: 1971

------=_Part_19809_32883783.1129548584420
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Hi,

I have just ported linux kernel 2.6.10 for MIPS4Kc-core board.Before
porting 2.6 kernel ,2.4.20 was running on this board. When I took
benchmarks for both the kernels for comparison, I found out that
linux-2.4.20 was giving much better results than linux-2.6.10. The
specs for the board are as follows:

--------------------------------------------------------------
133MHz MIPS4kc
32MB 133Mhz SDRAM
Cache Size: 16KB
Timer interrupt is set to 100 interrupts/sec
The hard disk attached to the board had ultraDMA 5 capability
--------------------------------------------------------------

I am also attaching the benchmarks I took for both the kernels. Is
there any way I can improve 2.6's performance? Thanks.

------=_Part_19809_32883783.1129548584420
Content-Type: application/vnd.ms-excel; name="Comparison 2.4.20, 2.4.32-rc-1, 2.6.10(11th Oct-2005).xls"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="Comparison 2.4.20, 2.4.32-rc-1, 2.6.10(11th Oct-2005).xls"

0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAACAAAA1gAAAAAAAAAA
EAAA/v///wAAAAD+////AAAAANQAAADVAAAA////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////8J
CBAAAAYFAHUnzQfJwAAABgIAAOEAAgCwBMEAAgAAAOIAAABcAHAABwAAc2hhaHphZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEIAAgCwBGEBAgAAAMABAAA9AQgA
AQACAAMABACcAAIADgAZAAIAAAASAAIAAAATAAIAAACvAQIAAAC8AQIAAAA9ABIA4AF4ANsz+iM4
AAMAAAABAFgCQAACAAAAjQACAAAAIgACAAAADgACAAEAtwECAAAA2gACAAAAMQAaAMgAAAD/f5AB
AAAAAAAABQFBAHIAaQBhAGwAMQAaAMgAAAD/f5ABAAAAAAAABQFBAHIAaQBhAGwAMQAaAMgAAAD/
f5ABAAAAAAAABQFBAHIAaQBhAGwAMQAaAMgAAAD/f5ABAAAAAAAABQFBAHIAaQBhAGwAMQAaAKAA
AAD/f5ABAAAAAAAABQFBAHIAaQBhAGwAMQAaAMgAAQD/f7wCAAAAAgAABQFBAHIAaQBhAGwAMQAa
AMgAAgD/f5ABAAAAAgAABQFBAHIAaQBhAGwAMQAaAKAAAAD/f5ABAAAAAAAABQFBAHIAaQBhAGwA
MQAaAMgAAAD/f5ABAAAAAAAABQFBAHIAaQBhAGwAMQAaAMMAAQD/f7wCAAAAAAAABQFBAHIAaQBh
AGwAMQAaAMgAAQD/f7wCAAAAAAAABQFBAHIAaQBhAGwAMQAaAMgAAQAJALwCAAAAAgAABQFBAHIA
aQBhAGwAMQAaAKAAAQD/f7wCAAAAAgAABQFBAHIAaQBhAGwAMQAaAKAAAAD/f5ABAAAAAgAABQFB
AHIAaQBhAGwAMQAaAGQAAAD/f5ABAAAAAAAABQFBAHIAaQBhAGwAMQAaAKAAAAD/f5ABAAAAAAAA
BQFBAHIAaQBhAGwAMQAaAGQAAAD/f5ABAAAAAAAABQFBAHIAaQBhAGwAMQAaAGQAAAD/f5ABAAAA
AAAABQFBAHIAaQBhAGwAMQAaAKAAAQD/f7wCAAAAAAAABQFBAHIAaQBhAGwAMQAaALkAAQD/f7wC
AAAAAAAABQFBAHIAaQBhAGwAMQAaAKAAAQD/f7wCAAAAAAAABQFBAHIAaQBhAGwAMQAaAGQAAAD/
f5ABAAAAAAAABQFBAHIAaQBhAGwAMQAaAKAAAAD/f5ABAAAAAAAABQFBAHIAaQBhAGwAMQAaAMgA
AgA1AJABAAAAAgAABQFBAHIAaQBhAGwAMQAaAKAAAQD/f7wCAAAAAAAABQFBAHIAaQBhAGwAMQAa
AKAAAAD/f5ABAAAAAAAABQFBAHIAaQBhAGwAMQAaAL4AAAD/f5ABAAAAAAAABQFBAHIAaQBhAGwA
MQAaAKoAAQD/f7wCAAAAAAAABQFBAHIAaQBhAGwAMQAaAKAAAAD/f5ABAAAAAAAABQFBAHIAaQBh
AGwAMQAaAKAAAAD/f5ABAAAAAAAABQFBAHIAaQBhAGwAMQAaAKoAAQD/f7wCAAAAAgAABQFBAHIA
aQBhAGwAMQAaAKAAAAD/f5ABAAAAAAAABQFBAHIAaQBhAGwAMQAaAKAAAAD/f5ABAAAAAAAABQFB
AHIAaQBhAGwAMQAaAKAAAQD/f7wCAAAAAgAABQFBAHIAaQBhAGwAMQAaAKAAAAD/f5ABAAAAAgAA
BQFBAHIAaQBhAGwAMQAaAKAAAAD/f5ABAAAAAAAABQFBAHIAaQBhAGwAMQAaAKAAAAD/f5ABAAAA
AAAABQFBAHIAaQBhAGwAMQAaAKAAAAD/f5ABAAAAAgAABQFBAHIAaQBhAGwAMQAaAKAAAAD/f5AB
AAAAAAAABQFBAHIAaQBhAGwAMQAaAKAAAAD/f5ABAAAAAAAABQFBAHIAaQBhAGwAMQAaAKAAAAD/
f5ABAAAAAgAABQFBAHIAaQBhAGwAMQAaAKAAAAD/f5ABAAAAAgAABQFBAHIAaQBhAGwAMQAaAKAA
AAD/f5ABAAAAAgAABQFBAHIAaQBhAGwAMQAaAKAAAAD/f5ABAAAAAgAABQFBAHIAaQBhAGwAMQAa
AKAAAQD/f7wCAAAAAgAABQFBAHIAaQBhAGwAMQAaAKAAAAD/f5ABAAAAAgAABQFBAHIAaQBhAGwA
MQAaAKAAAQD/f7wCAAAAAgAABQFBAHIAaQBhAGwAMQAaAKAAAAD/f5ABAAAAAgAABQFBAHIAaQBh
AGwAMQAaAKAAAQD/f7wCAAAAAgAABQFBAHIAaQBhAGwAMQAaAKAAAAD/f5ABAAAAAgAABQFBAHIA
aQBhAGwAMQAaAKAAAAD/f5ABAAAAAgAABQFBAHIAaQBhAGwAMQAaAKAAAAD/f5ABAAAAAgAABQFB
AHIAaQBhAGwAMQAaAKoAAQD/f7wCAAAAAgAABQFBAHIAaQBhAGwAMQAaAKAAAQD/f7wCAAAAAgAA
BQFBAHIAaQBhAGwAMQAaAKAAAQD/f7wCAAAAAAAABQFBAHIAaQBhAGwAMQAaAKAAAQD/f7wCAAAA
AAAABQFBAHIAaQBhAGwAHgQcAAUAFwAAIiQiIywjIzBfKTtcKCIkIiMsIyMwXCkeBCEABgAcAAAi
JCIjLCMjMF8pO1tSZWRdXCgiJCIjLCMjMFwpHgQiAAcAHQAAIiQiIywjIzAuMDBfKTtcKCIkIiMs
IyMwLjAwXCkeBCcACAAiAAAiJCIjLCMjMC4wMF8pO1tSZWRdXCgiJCIjLCMjMC4wMFwpHgQ3ACoA
MgAAXygiJCIqICMsIyMwXyk7XygiJCIqIFwoIywjIzBcKTtfKCIkIiogIi0iXyk7XyhAXykeBC4A
KQApAABfKCogIywjIzBfKTtfKCogXCgjLCMjMFwpO18oKiAiLSJfKTtfKEBfKR4EPwAsADoAAF8o
IiQiKiAjLCMjMC4wMF8pO18oIiQiKiBcKCMsIyMwLjAwXCk7XygiJCIqICItIj8/Xyk7XyhAXyke
BDYAKwAxAABfKCogIywjIzAuMDBfKTtfKCogXCgjLCMjMC4wMFwpO18oKiAiLSI/P18pO18oQF8p
HgQIAKQAAwAAMC4wHgQVAKUAEAAAIlllcyI7IlllcyI7Ik5vIh4EGgCmABUAACJUcnVlIjsiVHJ1
ZSI7IkZhbHNlIh4EFACnAA8AACJPbiI7Ik9uIjsiT2ZmIh4EXQCoACwAAVsAJACsIC0AMgBdAFwA
IAAjACwAIwAjADAALgAwADAAXwApADsAWwBSAGUAZABdAFwAKABbACQArCAtADIAXQBcACAAIwAs
ACMAIwAwAC4AMAAwAFwAKQAeBBoAqQAVAABbJC00MDldaDptbTpzc1wgQU0vUE0eBAoAqgAFAAAw
MDAwMB4EDgCrAAkAAFwyLlw0LlwyMB4EIwCsAB4AAFwyLlw0LlwyMDtcMi5cNC5cM1wyO1wyLlw2
LlwxMB4EIwCtAB4AAFwyLlw2LlwxMDtcMi5cNC5cM1wyO1wyLlw0LlwyMOAAFAAAAAAA9f8gAAAA
AAAAAAAAAADAIOAAFAABAAAA9f8gAAD0AAAAAAAAAADAIOAAFAABAAAA9f8gAAD0AAAAAAAAAADA
IOAAFAACAAAA9f8gAAD0AAAAAAAAAADAIOAAFAACAAAA9f8gAAD0AAAAAAAAAADAIOAAFAAAAAAA
9f8gAAD0AAAAAAAAAADAIOAAFAAAAAAA9f8gAAD0AAAAAAAAAADAIOAAFAAAAAAA9f8gAAD0AAAA
AAAAAADAIOAAFAAAAAAA9f8gAAD0AAAAAAAAAADAIOAAFAAAAAAA9f8gAAD0AAAAAAAAAADAIOAA
FAAAAAAA9f8gAAD0AAAAAAAAAADAIOAAFAAAAAAA9f8gAAD0AAAAAAAAAADAIOAAFAAAAAAA9f8g
AAD0AAAAAAAAAADAIOAAFAAAAAAA9f8gAAD0AAAAAAAAAADAIOAAFAAAAAAA9f8gAAD0AAAAAAAA
AADAIOAAFAAAAAAAAQAgAAAAAAAAAAAAAADAIOAAFAABACsA9f8gAAD4AAAAAAAAAADAIOAAFAAB
ACkA9f8gAAD4AAAAAAAAAADAIOAAFAABACwA9f8gAAD4AAAAAAAAAADAIOAAFAABACoA9f8gAAD4
AAAAAAAAAADAIOAAFAABAAkA9f8gAAD4AAAAAAAAAADAIOAAFAAAAKQAAQAgAAAEAAAAAAAAAADA
IOAAFAAHAAAAAQAgAAAIAAAAAAAAAADAIOAAFAAGAKQAAQAgAAAMAAAAAAAAAADAIOAAFAAGAAAA
AQAgAAAIAAAAAAAAAADAIOAAFAAMAKQAAQAgAABMAAAAAAAAAAQIIOAAFAAAAKQAAQAgAABEAAAA
AAAAAADAIOAAFAAAAKQAAQAjAABUAAAAAAAAAADAIOAAFAAAAKQACQAjAABUAAAAAAAAAADAIOAA
FAAAAAAAAQAjAABQAAAAAAAAAADAIOAAFAAAAAAAAQAgAAAgABAAAAAgAADAIOAAFAAYAAAAAQAg
AAAIAAAAAAAAAADAIOAAFAAAAKQAAQAgAABkAAAAAAAAAADAIOAAFAAAAKQACQAjAAB0AAAAAAAA
AADAIOAAFAAMAKQAAQAgAABMAAAAAAAAAADAIOAAFAAMAAAAAQAgAABIAAAAAAAAAAQIIJMCBAAQ
gAP/kwIEABGABv+TAgQAEoAE/5MCBAATgAf/kwIEAACAAP+TAgQAFIAF/2ABAgAAAIUADgCqEwAA
AAAGAE1lbW9yeYUACwBKUAAAAAADAElERYUADwB1vQAAAAAHAE5ldHdvcmuFAA0A4EABAAAABQBT
YW1iYYwABAABAAEArgEEAAQAAQQXABoABAAAAAAAAAAAAAEAAQAAAAIAAgAAAAMAAwDBAQgAwQEA
AFSNAQDrAIIADwAA8HoAAAAAAAbwQAAAAAEcAAAHAAAADwAAAAYAAAABAAAABAAAAAMAAAARAAAA
BAAAAAcAAAAFAAAABAAAAAIAAAABAAAABgAAAAIAAAAzAAvwEgAAAL8ACAAIAIEBQQAACMABQAAA
CEAAHvEQAAAADQAACAwAAAgXAAAI9wAAEPwAVgRhAAAAJAAAAAoAAFRpbWUgKFNlYykOAABTcGVl
ZCAoTUIvU2VjKRQAAElERSBQZXJmb3JtYW5jZSBUZXN0MAAAZGQgaWY9L2Rldi96ZXJvIG9mPS8x
Z2ItZmlsZSBicz0xMDI0ayBjb3VudD0xMDI0MAAAZGQgaWY9LzFnYi1maWxlIG9mPS9kZXYvbnVs
bCBicz0xMDI0ayBjb3VudD0xMDI0MQAAZGQgaWY9LzFnYi1maWxlIG9mPS8xZ2ItZmlsZTIgYnM9
MTAyNGsgY291bnQ9MTAyNAwAAEdldCAoTUIvU2VjKQwAAFB1dCAoTUIvU2VjKRYAAFNhbWJhIFBl
cmZvcm1hbmNlIFRlc3QQAAAxME1CIGZyb20gTWVtb3J5FgAARnJvbSBIRCBTcGVlZCAoTUIvU2Vj
KRcAAEZyb20gTWVtIFNwZWVkIChNQi9TZWMpMgAAZGQgaWY9L2Rldi96ZXJvIG9mPS9kZXYvbnVs
bCBicz0xMDI0MGsgY291bnQ9MTAyNDAoAABGVFAgU2VydmVyIHJ1bm5pbmcgb24gQm9hcmQsIGZy
b20gTWVtb3J5HAAAU2FtYmEgU2VydmVyIHZlcnNpb246IDIuMi4xMhQAAE1lbW9yeSBUcmFuc2Zl
ciBUZXN0GAAATmV0d29yayBQZXJmb3JtYW5jZSBUZXN0IgAARGF0YSBTaXplOiAxMDBnYiwgQmxv
Y2sgU2l6ZTogMTBNQisAAHNtYmNsaWVudCAvLzE5Mi4xNjguMTI4LjIyNS9yb290IC1kMiAtVXJv
b3QeAAAuL3R0Y3AgLXV0IDE5Mi4xNjguMS4zMCA8IDUwbWIGAAAyLjQuMjAOAABLZXJuZWwgVmVy
c2lvbgYAADIuNi4xMAoAADIuNC4zMi1yYzEdAABIREQgV3JpdGUgV2l0aG91dCBETUEgU3VwcG9y
dBoAAEhERCBXcml0ZSBXaXRoIERNQSBTdXBwb3J0HAAASEREIFJlYWQgV2l0aG91dCBETUEgU3Vw
cG9ydBkAAEhERCBSZWFkIFdpdGggRE1BIFN1cHBvcnQiAABIREQgUmVhZCtXcml0ZSBXaXRob3V0
IERNQSBTdXBwb3J0HwAASEREIFJlYWQrV3JpdGUgV2l0aCBETUEgU3VwcG9ydDYAAEZUUCBTZXJ2
ZXIgcnVubmluZyBvbiBCb2FyZCwgZnJvbSBIREQgV2l0aCBETUEgU3VwcG9ydDMAAERhdGEgU2l6
ZTogMWdiLCBCbG9jayBTaXplOiAxTUIsIEZpbGUgc3lzdGVtOiBFeHQtMh8AAEZUUDogdnNmdHBk
LCBGaWxlIHN5c3RlbTogRXh0LTIlAAA1ME1CIEZpbGUgdXNpbmcgSEQgKFdpdGggRE1BIFN1cHBv
cnQpJAAAVURQIFRyYW5zbWl0ICh0dGNwKSBXaXRoIERNQSBTdXBwb3J0CwAAUHV0KE1CL1NlYyn/
ACoACAARDwAADAAAAP4PAAD5AAAA8xAAAO4BAACyEQAArQIAAOASAADbAwAAYwgVAGMIAAAAAAAA
AAAAABUAAAAAAAAA0goAAAAJCBAAAAYQAHUnzQfJwAAABgIAAAsCFAAAAAAAAAAAABUAAACgLAAA
bS8AAA0AAgABAAwAAgBkAA8AAgABABEAAgAAABAACAD8qfHSTWJQP18AAgABACoAAgAAACsAAgAA
AIIAAgABAIAACAAAAAAAAAAAACUCBAAAAP8AgQACAMEEFAAAABUAAACDAAIAAACEAAIAAABNADYY
AABcAFwAZABhAHQAYQBcAGgAcAAgAEwAYQBzAGUAcgBKAGUAdAAgADEAMwAyADAAIABQAEMATAAg
ADYAAAAAAAAAAQQABdwAWBdD/4AHAQABAOoKbwhkAAEADwBYAgIAAgBYAgMAAQBMAGUAdAB0AGUA
cgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAEwEAAP////8AAAAAAAAAAAAAAAAAAAAARElOVSIA
AAA0AiQV212uHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnAAAAAAAAAAEAAAAAAAAAAQAA
AAAAAAAAAAAAAAABAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJBUAAElVUEgJABEA
AAAAAAEAAAACAAAAAQAAAAAAAAAAAAAAAwAAAAAAAAABAAAAAQACAGQAAQABAAMAAgAAAAEAAAAC
AAAATABlAHQAdABlAHIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAYAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAIABbAG4AbwBuAGUAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAgAFsAbgBvAG4AZQBdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAEEAcgBpAGEAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAANAAAAFAAAAAAAAAAAQAAAAAAAADAwMAAAAAAAMDAwAAAAAAAAAAA
AAAAAAAAAAAAAQAAAAAAAABkAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAA
AAAAAAEBAAAEAQAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAEIAQwAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPABBAHUAdABvAG0A
YQB0AGkAYwA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAA8AAAATAQAAAAAAAA8AAAATAQAAAAAAAAMAAAAA
AAAAAAAAAA8AAAATAQAADwAAABMBAAAAAAAAAAAAAAAAAAA2ADAAMABkAHAAaQAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwBAAALAQAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAEA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AFQAeQBwAGUAIABuAGUAdwAgAFEAdQBpAGMAawAgAFMAZQB0ACAAbgBhAG0AZQAgAGgAZQByAGUA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaQAAAPEM
AAAAAAAAAAAAAGoAAAAuDwAAAAAAAAAAAACSAAAA9AwAAAAAAAAAAAAAkwAAAA8SAAAAAAAAAAAA
AJAAAAAOEgAAAAAAAAAAAABtAAAA+QsAAAAAAAAAAAAAAgAAAC0DAABFWENFTC5FWEUAAAAAAAAA
AQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAB
AAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAA8AAAATAQAADwAAABMB
AAAPAAAAEwEAAA8AAAATAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAcoQAiAAEAZAABAAEAAQAC
AFgCWAIAAAAAAADgPwAAAAAAAOA/AQBVAAIACAB9AAwAAAAAALYJFQACAAIAfQAMAAEAAQAAChUA
BgACAH0ADAACAAIA2w4VAAYAAgB9AAwABAAEAJIuDwAGAAIAAAIOAAAAAAAVAAAAAAADAAAACAIQ
AAAAAAADAP8AAAAAAAABDwAIAhAAAQAAAAMA/wAAAAAAAAEPAAgCEAAEAAAAAwD/AAAAAAAAAQ8A
CAIQAAUAAAADAP8AAAAAAAABDwAIAhAABgAAAAMA/wAAAAAAAAEPAAgCEAAHAAAAAwD/AAAAAAAA
AQ8ACAIQAAgAAAADAP8AAAAAAAABDwAIAhAACQAAAAMA/wAAAAAAAAEPAAgCEAAQAAAAAwD/AAAA
AAAAAQ8ACAIQABEAAAADAP8AAAAAAAABDwAIAhAAEgAAAAMA/wAAAAAAAAEPAAgCEAATAAAAAwD/
AAAAAAAAAQ8ACAIQABQAAAADAP8AAAAAAAABDwD9AAoAAAAAABgADwAAAP0ACgABAAAAGAARAAAA
/QAKAAQAAAAWAAwAAAABAgYABQAAABcA/QAKAAYAAAAZABUAAAD9AAoABgABABkAAAAAAP0ACgAG
AAIAGQABAAAA/QAKAAcAAAAbABQAAAB+AgoABwABABoAAQKjQAYAIwAHAAIAGgBOnam0y3CwQAAA
FBEs/Q0AHmQAHgAEBUQHAAHABv0ACgAIAAAAGwAXAAAAfgIKAAgAAQAaAAEsokAGACMACAACABoA
LIVJVmgysUAAAAkAAv4NAB5kAB4ABAVECAABwAb9AAoACQAAABsAFgAAAH4CCgAJAAEAGgCBRahA
BgAjAAkAAgAaAEj0ygwZwKlAAAAHAAL/DQAeZAAeAAQFRAkAAcAGAQIGABAAAAAXAL4ADAARAAAA
IgAiACIAAgC+AAwAEgAAABsAGgAaAAIAvgAMABMAAAAbABsAGgACAL4ADAAUAAAAGwAaABoAAgDX
AB4AdQIAAPAADgAOAA4ACgAqAEMAQwBDAAoAEAAQABAAwgEkAC0ABwACAAkCAgAaAC4ACAACAA0C
AgAC/yYACQACAAkCAkQJAOwAyAAPAALwwAAAABAACPAIAAAAAgAAAAMEAAAPAAPwqAAAAA8ABPAo
AAAAAQAJ8BAAAAAAAAAAAAAAAAAAAAAAAAAAAgAK8AgAAAAABAAABQAAAA8ABPBwAAAAkgwK8AgA
AAABBAAAAAoAAJMAC/A2AAAAfwAEAQQBvwAIAAgAgQFOAAAIgwFNAAAIvwEQABAAwAFNAAAIywEB
AAAA/wEIAAgAPwIAAAIAAAAQ8BIAAAAAAAEA4wEMAA8ABAD7Ai0AAAAAABHwAAAAAF0AGgAVABIA
BQABABFgAAAAAEBgQwEAAAAAAAAAAAkIEAAABiAAdSfNB8nAAAAGAgAAFAAAABUAAACDAAIAAACE
AAIAAABNADYYAABcAFwAZABhAHQAYQBcAGgAcAAgAEwAYQBzAGUAcgBKAGUAdAAgADEAMwAyADAA
IABQAEMATAAgADYAAAAAAAAAAQQABdwAWBdD/4AHAgABAOoKbwhkAAEADwBYAgIAAgBYAgMAAQBM
AGUAdAB0AGUAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAEwEAAP////8AAAAAAAAAAAAAAAAA
AAAARElOVSIAAAA0AiQV212uHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnAAAAAAAAAAEA
AAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJBUA
AElVUEgJABEAAAAAAAEAAAACAAAAAQAAAAAAAAAAAAAAAwAAAAAAAAABAAAAAQACAGQAAQABAAMA
AgAAAAEAAAACAAAATABlAHQAdABlAHIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAYAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIABbAG4AbwBuAGUAXQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAFsAbgBvAG4AZQBdAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEEAcgBpAGEAbAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAFAAAAAAAAAAAQAAAAAAAADAwMAAAAAAAMDA
wAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAABkAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAQAA
AAAAAAAAAAAAAAAAAAEBAAAEAQAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAEIA
QwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPABB
AHUAdABvAG0AYQB0AGkAYwA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAA8AAAATAQAAAAAAAA8AAAATAQAA
AAAAAAMAAAAAAAAAAAAAAA8AAAATAQAADwAAABMBAAAAAAAAAAAAAAAAAAA2ADAAMABkAHAAaQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwBAAALAQAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAZAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAFQAeQBwAGUAIABuAGUAdwAgAFEAdQBpAGMAawAgAFMAZQB0ACAAbgBhAG0AZQAg
AGgAZQByAGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAaQAAAPEMAAAAAAAAAAAAAGoAAAAuDwAAAAAAAAAAAACSAAAA9AwAAAAAAAAAAAAAkwAAAA8S
AAAAAAAAAAAAAJAAAAAOEgAAAAAAAAAAAABtAAAA+QsAAAAAAAAAAAAAAgAAAC0DAABFWENFTC5F
WEUAAAAAAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAA
AQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAA8AAAAT
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
AAAAAAAAAAMCDgACAAAAAAAAAAAAAAAAAGUQAgADAAoAAAA+AhIAtgAAAAAAQAAAAAAAAAAAAAAA
HQAPAAMPAAQAAAABAA8ADwAEBO8ABgAFADcAAAAKAAAACQgQAAAGEAB1J80HycAAAAYCAAALAhgA
AAAAAAAAAAAxAAAARGkAACVwAAA0dAAADQACAAEADAACAGQADwACAAEAEQACAAAAEAAIAPyp8dJN
YlA/XwACAAEAKgACAAAAKwACAAAAggACAAEAgAAIAAAAAAAAAAAAJQIEAAAA/wCBAAIAwQQUAAAA
FQAAAIMAAgAAAIQAAgAAAE0ANhgAAFwAXABkAGEAdABhAFwAaABwACAATABhAHMAZQByAEoAZQB0
ACAAMQAzADIAMAAgAFAAQwBMACAANgAAAAAAAAABBAAF3ABYF0P/gAcBAAEA6gpvCGQAAQAPAFgC
AgACAFgCAwABAEwAZQB0AHQAZQByAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAIAAAATAQAA/////wAA
AAAAAAAAAAAAAAAAAABESU5VIgAAADQCJBXbXa4eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
ACcAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAkFQAASVVQSAkAEQAAAAAAAQAAAAIAAAABAAAAAAAAAAAAAAADAAAAAAAAAAEAAAAB
AAIAZAABAAEAAwACAAAAAQAAAAIAAABMAGUAdAB0AGUAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAABAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAFsAbgBvAG4AZQBdAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAWwBuAG8AbgBlAF0AAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQQByAGkAYQBsAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAUAAAAAAAAAABAAAAAAAA
AMDAwAAAAAAAwMDAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAGQAAAAAAAAAAACAPwAAAAAAAAAA
AAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQEAAAQBAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAEEAQgBDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAA8AEEAdQB0AG8AbQBhAHQAaQBjAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAADwAAABMBAAAA
AAAADwAAABMBAAAAAAAAAwAAAAAAAAAAAAAADwAAABMBAAAPAAAAEwEAAAAAAAAAAAAAAAAAADYA
MAAwAGQAcABpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAEA
AAsBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABkAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAVAB5AHAAZQAgAG4AZQB3ACAAUQB1AGkAYwBrACAAUwBlAHQA
IABuAGEAbQBlACAAaABlAHIAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABpAAAA8QwAAAAAAAAAAAAAagAAAC4PAAAAAAAAAAAAAJIAAAD0DAAAAAAA
AAAAAACTAAAADxIAAAAAAAAAAAAAkAAAAA4SAAAAAAAAAAAAAG0AAAD5CwAAAAAAAAAAAAACAAAA
LQMAAEVYQ0VMLkVYRQAAAAAAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAB
AAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEA
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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQVAABJ
VVBICQARAAAAAAABAAAAAgAAAAEAAAAAAAAAAAAAAAMAAAAAAAAAAQAAAAEAAgBkAAEAAQADAAIA
AAABAAAAAgAAAEwAZQB0AHQAZQByAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAWwBuAG8AbgBlAF0AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIABbAG4AbwBuAGUAXQAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAHIAaQBhAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAABQAAAAAAAAAAEAAAAAAAAAwMDAAAAAAADAwMAA
AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAZAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAAAEAAAAA
AAAAAAAAAAAAAAABAQAABAEAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQQBCAEMA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAQQB1
AHQAbwBtAGEAdABpAGMAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAPAAAAEwEAAAAAAAAPAAAAEwEAAAAA
AAADAAAAAAAAAAAAAAAPAAAAEwEAAA8AAAATAQAAAAAAAAAAAAAAAAAANgAwADAAZABwAGkAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAQAACwEAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AGQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAABUAHkAcABlACAAbgBlAHcAIABRAHUAaQBjAGsAIABTAGUAdAAgAG4AYQBtAGUAIABo
AGUAcgBlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
bwhkAAEADwBYAgIAAgBYAgMAAQBMAGUAdAB0AGUAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAA
EwEAAP////8AAAAAAAAAAAAAAAAAAAAARElOVSIAAAA0AiQV212uHgAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAnAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAwAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAJBUAAElVUEgJABEAAAAAAAEAAAACAAAAAQAAAAAAAAAAAAAAAwAA
AAAAAAABAAAAAQACAGQAAQABAAMAAgAAAAEAAAACAAAATABlAHQAdABlAHIAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAQAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIABbAG4A
bwBuAGUAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAFsAbgBv
AG4AZQBdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEEAcgBpAGEA
bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAFAAAAAA
AAAAAQAAAAAAAADAwMAAAAAAAMDAwAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAABkAAAAAAAAAAAA
gD8AAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEBAAAEAQAAAQAAAAAAAAABAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAABBAEIAQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAPABBAHUAdABvAG0AYQB0AGkAYwA+AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAA
AA8AAAATAQAAAAAAAA8AAAATAQAAAAAAAAMAAAAAAAAAAAAAAA8AAAATAQAADwAAABMBAAAAAAAA
AAAAAAAAAAA2ADAAMABkAHAAaQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAwBAAALAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAeQBwAGUAIABuAGUAdwAgAFEAdQBpAGMA
awAgAFMAZQB0ACAAbgBhAG0AZQAgAGgAZQByAGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaQAAAPEMAAAAAAAAAAAAAGoAAAAuDwAAAAAAAAAAAACS
AAAA9AwAAAAAAAAAAAAAkwAAAA8SAAAAAAAAAAAAAJAAAAAOEgAAAAAAAAAAAABtAAAA+QsAAAAA
AAAAAAAAAgAAAC0DAABFWENFTC5FWEUAAAAAAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAA
AAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAA
AQAAAAEAAAABAAAAAQAAAA8AAAATAQAADwAAABMBAAAPAAAAEwEAAA8AAAATAQAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAABgAcoQAiAAEAZAABAAEAAQAAAFgCWAIAAAAAAADgPwAAAAAAAOA/AQAzAAIA
AwBgEAoALxzSD8gAAAAWAGAQCgAvHNIPyAABABcAYBAKALsX0g+qAAEAGQBgEAoAAQ5rDaAAAAAs
ABIAAgAAAAEQAgAAAAIQEAAAAAAAAAAAAADAugDoP7MAMxAAAKAABAABAAEAZBAIADyEAQAa6wAA
MhAEAAAAAgAzEAAABxAMAAAAAAAAAP//CQBNAAoQEAD///8AAAAAAAEAAQBOAE0ANBAAAAMQDAAD
AAEAAwADAAEAAAAzEAAAURAIAAABAAAAAAAADRAiAAAADwFSAC8AVwAgAFcAaQB0AGgAbwB1AHQA
IABEAE0AQQBREBMAAQIAAKQACwA7AQAmACgAAgACAFEQEwACAgAApAALADsBACYAKAAAAAAAURAI
AAMBAAAAAAAABhAIAP//AAAAAAAAMxAAAF8QAgAAADQQAABFEAIAAAA0EAAAAxAMAAMAAQADAAMA
AQAAADMQAABREAgAAAEAAAAAAAANEBwAAAAMAVIALwBXACAAVwBpAHQAaAAgAEQATQBBAFEQIwAB
AgAApAAbACkXADoBAC0AAgA6AQAuAAIAEDoBAC8AAgAQFVEQIwACAgAApAAbACkXADoBAC0AAAA6
AQAuAAAAEDoBAC8AAAAQFVEQCAADAQAAAAAAAAYQCAD//wEAAQAAADMQAABfEAIAAAA0EAAARRAC
AAAANBAAAEQQBAAaAAAAJBACAAIAJRAgAAICAQAAAAAArP///6n///8AAAAAAAAAALEATQAQPQAA
MxAAAE8QFAACAAIAAAAAAAAAAAAAAAAAAAAAACYQAgAWAFEQCAAAAQAAAAAAADQQAAAkEAIAAwAl
ECAAAgIBAAAAAACs////qf///wAAAAAAAAAAsQBNABA9AAAzEAAATxAUAAIAAgAAAAAAAAAAAAAA
AAAAAAAAJhACABcAURAIAAABAAAAAAAANBAAAEYQAgABAEEQEgAAALoDAAB1BQAAhwoAAOQGAAAz
EAAATxAUAAIAAgCzAQAAyAQAAIwMAABtCgAAHRASAAAAAAAAAAAAAAAAAAAAAAAAADMQAAAgEAgA
AQABAAEAAQBiEBIAAAAAAAEAAAABAAAAAAAAAO8AHhAeAAIAAwEAAAAAAAAAAAAAAAAAAAAAAAAA
ACMATQAAADQQAAAdEBIAAQAAAAAAAAAAAAAAAAAAAAAAMxAAAB8QKgAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAGwEeEB4AAgADAQAAAAAAAAAAAAAAAAAAAAAAAAAAIwBN
AAAAIRACAAEABxAMAAAAAAAAAP//CQBNADQQAAAlECAAAgIBAAAAAADiBQAAMQ4AACUGAABvAQAA
gQBNAAAAAAAzEAAATxAUAAIAAgAAAAAAAAAAAF4AAAAVAAAAJhACABkAURAIAAABAAAAAAAADRAi
AAAADwFLAGUAcgBuAGUAbAAgAFYAZQByAHMAaQBvAG4AcwAnEAYAAwAAAAAANBAAACUQIAACAgEA
AAAAAAAAAABeBwAAWwIAAAEDAACBAk0AAABaADMQAABPEBQAAgACAAAAAAAAAAAAJAAAACwAAAAm
EAIAGQBREAgAAAEAAAAAAAANEBwAAAAMAVMAcABlAGUAZAAgAE0AQgAvAFMAZQBjACcQBgACAAAA
AAA0EAAANRAAADIQBAAAAAMAMxAAAAcQDACAgIAAAAAAAAAAFwAKEBAAwMDAAAAAAAABAAAAFgBP
ADQQAAAUEBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAzEAAAGBACAAAAIhAKAAAAAAAAAAAADwAVEBQA
6gAAABEAAABHBgAAbwQAAAIBAgAzEAAATxAUAAUAAQDrAAAADwAAAEgAAAAxAAAAJRAgAAICAQAA
AAAArP///6n///8AAAAAAAAAALEATQBACQAAMxAAAE8QFAACAAIAAAAAAAAAAAAAAAAAAAAAACYQ
AgAqAFEQCAAAAQAAAAAAADQQAAAyEAQAAAACADMQAAAHEAwAAAAAAAAA//8JAE0AChAQAP///wAA
AAAAAQABAE4ATQA0EAAANBAAADQQAAA0EAAAJRAgAAICAQAAAAAAUgcAAF0BAACmBwAAbwEAAIEA
TQCaMAAAMxAAAE8QFAACAAIAVgMAAAYBAAB1AAAAFQAAACYQAgAsAFEQCAAAAQAAAAAAAA0QNAAA
ABgBSQBEAEUAIABQAGUAcgBmAG8AcgBtAGEAbgBjAGUAIABUAGUAcwB0ACAASQBJAEkAJxAGAAEA
AAAAADQQAAA0EAAAAAIOAAAAAAADAAAAAAACAAAAZRACAAIAZRACAAEAZRACAAMACgAAAD4CEgC2
ABUAAABAAAAAAAAAAAAAAAAdAA8AAxUABAAAAAEAFQAVAAQE7wAGAAUANwAAAAoAAAAJCBAAAAYQ
AHUnzQfJwAAABgIAAAsCGAAAAAAAAAAAADsAAABv1gAAsdsAAHHgAAANAAIAAQAMAAIAZAAPAAIA
AQARAAIAAAAQAAgA/Knx0k1iUD9fAAIAAQAqAAIAAAArAAIAAACCAAIAAQCAAAgAAAAAAAAAAAAl
AgQAAAD/AIEAAgDBBBQAAAAVAAAAgwACAAAAhAACAAAATQA2GAAAXABcAGQAYQB0AGEAXABoAHAA
IABMAGEAcwBlAHIASgBlAHQAIAAxADMAMgAwACAAUABDAEwAIAA2AAAAAAAAAAEEAAXcAFgXQ/+A
BwEAAQDqCm8IZAABAA8AWAICAAIAWAIDAAEATABlAHQAdABlAHIAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAB
AAAAAgAAABMBAAD/////AAAAAAAAAAAAAAAAAAAAAERJTlUiAAAANAIkFdtdrh4AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAJwAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAAA
AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQVAABJVVBICQARAAAAAAABAAAAAgAAAAEAAAAAAAAA
AAAAAAMAAAAAAAAAAQAAAAEAAgBkAAEAAQADAAIAAAABAAAAAgAAAEwAZQB0AHQAZQByAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
ACAAWwBuAG8AbgBlAF0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
IABbAG4AbwBuAGUAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB
AHIAaQBhAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQA
AABQAAAAAAAAAAEAAAAAAAAAwMDAAAAAAADAwMAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAZAAA
AAAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAQAABAEAAAEAAAAAAAAA
AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQQBCAEMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAQQB1AHQAbwBtAGEAdABpAGMAPgAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAA
AAAAAAEAAAAPAAAAEwEAAAAAAAAPAAAAEwEAAAAAAAADAAAAAAAAAAAAAAAPAAAAEwEAAA8AAAAT
AQAAAAAAAAAAAAAAAAAANgAwADAAZABwAGkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAMAQAACwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAHkAcABlACAAbgBlAHcAIABR
AHUAaQBjAGsAIABTAGUAdAAgAG4AYQBtAGUAIABoAGUAcgBlAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGkAAADxDAAAAAAAAAAAAABqAAAALg8AAAAA
AAAAAAAAkgAAAPQMAAAAAAAAAAAAAJMAAAAPEgAAAAAAAAAAAACQAAAADhIAAAAAAAAAAAAAbQAA
APkLAAAAAAAAAAAAAAIAAAAtAwAARVhDRUwuRVhFAAAAAAAAAAEAAAABAAAAAQAAAAEAAAABAAAA
AQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAB
AAAAAQAAAAEAAAABAAAAAQAAAAEAAAAPAAAAEwEAAA8AAAATAQAADwAAABMBAAAPAAAAEwEAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAYAHKEAIgABAGQAAQABAAEAAgBYAlgCAAAAAAAA4D8AAAAAAADg
PwEAVQACAAgAfQAMAAAAAADbCw8AAgACAH0ADAABAAEAJBcPAAIAAgB9AAwAAgACALYYDwACAAIA
AAIOAAAAAAA7AAAAAAADAAAACAIQAAAAAAADAP8AAAAAAAABDwAIAhAAAQAAAAMA/wAAAAAAAAEP
AAgCEAAEAAAAAwD/AAAAAAAAAQ8ACAIQAAUAAAADAP8AAAAAAAABDwAIAhAABgAAAAMA/wAAAAAA
AAEPAAgCEAAHAAAAAwD/AAAAAAAAAQ8ACAIQAAgAAAADAP8AAAAAAAABDwAIAhAACQAAAAMA/wAA
AAAAAAEPAAgCEAAKAAAAAwD/AAAAAAAAAQ8ACAIQAAsAAAADAP8AAAAAAAABDwAIAhAADAAAAAMA
/wAAAAAAAAEPAAgCEAANAAAAAwD/AAAAAAAAAQ8ACAIQAA4AAAADAP8AAAAAAAABDwAIAhAADwAA
AAMA/wAAAAAAAAEPAAgCEAAQAAAAAwD/AAAAAAAAAQ8ACAIQABEAAAADAP8AAAAAAAABDwAIAhAA
EgAAAAMA/wAAAAAAAAEPAAgCEAATAAAAAwD/AAAAAAAAAQ8ACAIQABQAAAADAP8AAAAAAAABDwAI
AhAAFQAAAAMA/wAAAAAAAAEPAAgCEAAWAAAAAwD/AAAAAAAAAQ8ACAIQABcAAAADAP8AAAAAAAAB
DwAIAhAAGAAAAAMA/wAAAAAAAAEPAAgCEAAZAAAAAwD/AAAAAAAAAQ8ACAIQABoAAAADAP8AAAAA
AAABDwAIAhAAGwAAAAMA/wAAAAAAAAEPAAgCEAAcAAAAAwD/AAAAAAAAAQ8ACAIQAB0AAAADAP8A
AAAAAAABDwAIAhAAHgAAAAMA/wAAAAAAAAEPAAgCEAAfAAAAAwD/AAAAAAAAAQ8A/QAKAAAAAAAY
ABAAAAC+AAoAAAABABUAFQACAP0ACgABAAAAGAAgAAAAvgAKAAEAAQAVABUAAgD9AAoABAAAABYA
EwAAAAECBgAEAAEAFgD9AAoABQAAABcAIgAAAL4ACgAFAAEAFQAVAAIA/QAKAAYAAAAZABUAAAD9
AAoABgABABkACgAAAP0ACgAGAAIAGQALAAAA/QAKAAcAAAAcABQAAAC9ABIABwABABoAAAAcQBoA
AdCLQAIA/QAKAAgAAAAcABcAAAADAg4ACAABABoARwN4CyRoG0B+AgoACAACABoAAeSLQP0ACgAJ
AAAAHAAWAAAAAwIOAAkAAQAaAFioNc07zhdAfgIKAAkAAgAaAAGQhkC+AAwACgAAABwAGgAaAAIA
vgAMAAsAAAAcABoAGgACAL4ADAAMAAAAHAAaABoAAgC+AAwADQAAABwAGgAaAAIAvgAMAA4AAAAc
ABoAGgACAL4ADAAPAAAAHAAaABoAAgC+AAwAEAAAABwAGgAaAAIAvgAMABEAAAAcABoAGgACAL4A
DAASAAAAHAAaABoAAgC+AAwAEwAAABwAGgAaAAIAvgAMABQAAAAcABoAGgACAL4ADAAVAAAAHAAa
ABoAAgC+AAwAFgAAABwAGgAaAAIAvgAMABcAAAAcABoAGgACAL4ADAAYAAAAHAAaABoAAgC+AAwA
GQAAABwAGgAaAAIAvgAMABoAAAAcABoAGgACAL4ADAAbAAAAHAAaABoAAgC+AAwAHAAAAB4AHgAe
AAIA/QAKAB0AAAAXAB4AAAD9AAoAHgAAABkAFQAAAP0ACgAeAAEAGQAGAAAA/QAKAB4AAgAZAAcA
AAD9AAoAHwAAACEAFAAAAL0AEgAfAAEAIAAB0IFAIAABkIBAAgDXAEAA+gQAAEQCHAAcABgAHAAq
ACQALgAuABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAADgAqAAgCEAAgAAAA
AwD/AAAAAAAAAQ8ACAIQACEAAAADAP8AAAAAAAABDwAIAhAAIgAAAAMA/wAAAAAAAAEPAAgCEAAj
AAAAAwD/AAAAAAAAAQ8ACAIQACQAAAADAP8AAAAAAAABDwAIAhAAJQAAAAMA/wAAAAAAAAEPAAgC
EAAmAAAAAwD/AAAAAAAAAQ8ACAIQACcAAAADAP8AAAAAAAABDwAIAhAAKAAAAAMA/wAAAAAAAAEP
AAgCEAApAAAAAwD/AAAAAAAAAQ8ACAIQACoAAAADAP8AAAAAAAABDwAIAhAAKwAAAAMA/wAAAAAA
AAEPAAgCEAAsAAAAAwD/AAAAAAAAAQ8ACAIQAC0AAAADAP8AAAAAAAABDwAIAhAALgAAAAMA/wAA
AAAAAAEPAAgCEAAvAAAAAwD/AAAAAAAAAQ8ACAIQADAAAAADAP8AAAAAAAABDwAIAhAAMQAAAAMA
/wAAAAAAAAEPAAgCEAAyAAAAAwD/AAAAAAAAAQ8ACAIQADMAAAADAP8AAAAAAAABDwAIAhAANAAA
AAMA/wAAAAAAAAEPAAgCEAA1AAAAAwD/AAAAAAAAAQ8ACAIQADYAAAADAP8AAAAAAAABDwAIAhAA
NwAAAAMA/wAAAAAAAAEPAAgCEAA4AAAAAwD/AAAAAAAAAQ8ACAIQADkAAAADAP8AAAAAAAABDwAI
AhAAOgAAAAMA/wAAAAAAAAEPAP0ACgAgAAAAIQAXAAAAAwIOACAAAQAgAMKGp1fKchdAfgIKACAA
AgAgAAGAgUD9AAoAIQAAACEAFgAAAAMCDgAhAAEAIAD0/dR46aYTQAMCDgAhAAIAIAD4U+Olm0QQ
QL4ADAAiAAAAIQAgACAAAgC+AAwAIwAAACEAIAAgAAIAvgAMACQAAAAhACAAIAACAL4ADAAlAAAA
IQAgACAAAgC+AAwAJgAAACEAIAAgAAIAvgAMACcAAAAhACAAIAACAL4ADAAoAAAAIQAgACAAAgC+
AAwAKQAAACEAIAAgAAIAvgAMACoAAAAhACAAIAACAL4ADAArAAAAIQAgACAAAgC+AAwALAAAACEA
IAAgAAIAvgAMAC0AAAAhACAAIAACAL4ADAAuAAAAIQAgACAAAgC+AAwALwAAACEAIAAgAAIAvgAM
ADAAAAAhACAAIAACAL4ADAAxAAAAIQAgACAAAgC+AAwAMgAAACEAIAAgAAIAvgAMADMAAAAhACAA
IAACAP0ACgA0AAAAFwANAAAA/QAKADUAAAAZABUAAAD9AAoANQABABkABgAAAP0ACgA1AAIAIwAj
AAAA/QAKADYAAAAcABQAAAC9ABIANgABABoAASCFQBUAAXyEQAIA/QAKADcAAAAcABcAAAADAg4A
NwABABoA5/up8dLNHEADAg4ANwACABUAXrpJDAKrGkD9AAoAOAAAACEAFgAAAAMCDgA4AAEAGgD+
1HjpJrEZQAMCDgA4AAIAFQDb+X5qvHQZQL4ADAA5AAAAHgAeAB4AAgC+AAwAOgAAAB8AFgAWAAIA
1wA6AHwEAAAIAi4AMgAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAOACoAJAAy
ADIAEADsAMIADwAC8J4BAABAAAjwCAAAAAQAAAAGDAAADwAD8IYBAAAPAATwKAAAAAEACfAQAAAA
AAAAAAAAAAAAAAAAAAAAAAIACvAIAAAAAAwAAAUAAAAPAATwagAAAJIMCvAIAAAAAgwAAAAKAACD
AAvwMAAAAH8ABAEEAb8ACAAIAIEBTgAACIMBTQAACL8BEAAQAMABTQAACP8BCAAIAD8CAAACAAAA
EPASAAAAAAABAAYACgAAAAIA+gMaAIgAAAAR8AAAAABdABoAFQASAAUAAgARYAAAAAAMeEMBAAAA
AAAAAAAJCBAAAAYgAHUnzQfJwAAABgIAABQAAAAVAAAAgwACAAAAhAACAAAATQA2GAAAXABcAGQA
YQB0AGEAXABoAHAAIABMAGEAcwBlAHIASgBlAHQAIAAxADMAMgAwACAAUABDAEwAIAA2AAAAAAAA
AAEEAAXcAFgXQ/+ABwIAAQDqCm8IZAABAA8AWAICAAIAWAIDAAEATABlAHQAdABlAHIAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAQAAAAAAAAABAAAAAgAAABMBAAD/////AAAAAAAAAAAAAAAAAAAAAERJTlUiAAAANAIkFdtd
rh4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJwAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAA
AAAAAQAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQVAABJVVBICQARAAAAAAABAAAA
AgAAAAEAAAAAAAAAAAAAAAMAAAAAAAAAAQAAAAEAAgBkAAEAAQADAAIAAAABAAAAAgAAAEwAZQB0
AHQAZQByAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACAAWwBuAG8AbgBlAF0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAIABbAG4AbwBuAGUAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAABBAHIAaQBhAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAADQAAABQAAAAAAAAAAEAAAAAAAAAwMDAAAAAAADAwMAAAAAAAAAAAAAAAAAAAAAA
AAEAAAAAAAAAZAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAQAA
BAEAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQQBCAEMAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAQQB1AHQAbwBtAGEAdABpAGMA
PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAEAAAAAAAAAAAAAAAEAAAAPAAAAEwEAAAAAAAAPAAAAEwEAAAAAAAADAAAAAAAAAAAAAAAP
AAAAEwEAAA8AAAATAQAAAAAAAAAAAAAAAAAANgAwADAAZABwAGkAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAQAACwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAABAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAHkAcABl
ACAAbgBlAHcAIABRAHUAaQBjAGsAIABTAGUAdAAgAG4AYQBtAGUAIABoAGUAcgBlAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGkAAADxDAAAAAAAAAAA
AABqAAAALg8AAAAAAAAAAAAAkgAAAPQMAAAAAAAAAAAAAJMAAAAPEgAAAAAAAAAAAACQAAAADhIA
AAAAAAAAAAAAbQAAAPkLAAAAAAAAAAAAAAIAAAAtAwAARVhDRUwuRVhFAAAAAAAAAAEAAAABAAAA
AQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAB
AAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAPAAAAEwEAAA8AAAATAQAADwAAABMB
AAAPAAAAEwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAHKEAIgABAGQAAQABAAEAAABYAlgCAAAA
AAAA4D8AAAAAAADgPwEAMwACAAMAYBAKAC8c0g/IAAAAGgBgEAoALxzSD8gAAQAbAGAQCgCeFsMP
yAAAABwAYBAKADwWKhGgAAEALwBgEAoAPBYqEaAAAQAwAGAQCgAvHNIPyAAAADQAEgACAAAAARAC
AAAAAhAQAAAAAAAAAAAA0H/6AACA0wAzEAAAoAAEAAEAAQBkEAgA9GQBAMwXAQAyEAQAAAACADMQ
AAAHEAwAAAAAAAAA//8JAE0AChAQAP///wAAAAAAAQABAE4ATQA0EAAAAxAMAAMAAQADAAMAAQAA
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
AEgAUAAgAEwAYQBzAGUAcgBKAGUAdAAgADIANAAyADAAIABQAEMATAAgADYAAAAAAAAAAQQABdwA
dBdD/4AHAgABAOoKbwhkAAEADwBYAgIAAQBYAgMAAABMAGUAdAB0AGUAcgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA
AAAAAAEAAAACAAAAEgEAAP////8AAAAAAAAAAAAAAAAAAAAARElOVSIAAAA0AkAVAIdMZgAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArAAAAAAAAAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA
AAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQBUAAElVUEgKABEAAAAAAAEAAAACAAAAAQAA
AAAAAAAAAAAAAwAAAAAAAAAAAAAAAQABAGQAAQAAAAMAAgAAAAEAAAACAAAATABlAHQAdABlAHIA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAIABbAG4AbwBuAGUAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAgAFsAbgBvAG4AZQBdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAEEAcgBpAGEAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAANAAAAFAAAAAAAAAAAQAAAAAAAADAwMAAAAAAAMDAwAAAAAAAAAAAAAAA
AAAAAAAAAQAAAAEAAABkAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA
AAAAAAAAAAAAAAAAAAQBAAADAQAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAABBAEIA
QwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPABB
AHUAdABvAG0AYQB0AGkAYwA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAA
AAAAAABAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAQAAAA8AAAASAQAAAAAAAA8AAAASAQAA
AAAAAAIAAAAAAAAAAAAAAA8AAAASAQAADwAAABIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAPAQAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAZAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAaQAAAPEMAAAAAAAAAAAAAGoAAAAuDwAAAAAAAAAAAABrAAAA/gsAAAAAAAAAAAAAawAAAP8L
AAAAAAAAAAAAAG0AAAD5CwAAAAAAAAAAAABtAAAA+QsAAAAAAAAAAAAAAgAAAP////9FWENFTC5F
WEUAAAAAAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAA
AQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAA8AAAAS
AQAADwAAABIBAAAPAAAAEgEAAA8AAAASAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAcAQAAAKEA
IgABAGQAAQABAAEAAABYAlgCAAAAAAAA4D8AAAAAAADgPwEAMwACAAMAYBAKAC8c0g/IAAAAHQBg
EAoALxzSD8gAAQAeAGAQCgCeFtIPyAAAAB8AYBAKAO0S0g+gAAEALQBgEAoA7RLSD6AAAQAuAGAQ
CgDtEtIPoAAAADMAEgACAAAAARACAAAAAhAQAAAAAAAAAAAA0H/6AND/0QAzEAAAoAAEAAEAAQBk
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
AFwAaABwACAATABhAHMAZQByAEoAZQB0ACAAMQAzADIAMAAgAFAAQwBMACAANgAAAAAAAAABBAAF
3ABYF0P/gAcCAAEA6gpvCGQAAQAPAFgCAgACAFgCAwABAEwAZQB0AHQAZQByAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA
AAAAAAAAAQAAAAIAAAATAQAA/////wAAAAAAAAAAAAAAAAAAAABESU5VIgAAADQCJBXbXa4eAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAEA
AAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkFQAASVVQSAkAEQAAAAAAAQAAAAIAAAAB
AAAAAAAAAAAAAAADAAAAAAAAAAEAAAABAAIAZAABAAEAAwACAAAAAQAAAAIAAABMAGUAdAB0AGUA
cgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAgAFsAbgBvAG4AZQBdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAACAAWwBuAG8AbgBlAF0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAQQByAGkAYQBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAA0AAAAUAAAAAAAAAABAAAAAAAAAMDAwAAAAAAAwMDAAAAAAAAAAAAAAAAAAAAAAAABAAAA
AAAAAGQAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQEAAAQBAAAB
AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEEAQgBDAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AEEAdQB0AG8AbQBhAHQAaQBjAD4AAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB
AAAAAAAAAAAAAAABAAAADwAAABMBAAAAAAAADwAAABMBAAAAAAAAAwAAAAAAAAAAAAAADwAAABMB
AAAPAAAAEwEAAAAAAAAAAAAAAAAAADYAMAAwAGQAcABpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAADAEAAAsBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAAQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAB5AHAAZQAgAG4A
ZQB3ACAAUQB1AGkAYwBrACAAUwBlAHQAIABuAGEAbQBlACAAaABlAHIAZQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABpAAAA8QwAAAAAAAAAAAAAagAA
AC4PAAAAAAAAAAAAAJIAAAD0DAAAAAAAAAAAAACTAAAADxIAAAAAAAAAAAAAkAAAAA4SAAAAAAAA
AAAAAG0AAAD5CwAAAAAAAAAAAAACAAAALQMAAEVYQ0VMLkVYRQAAAAAAAAABAAAAAQAAAAEAAAAB
AAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEA
AAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAADwAAABMBAAAPAAAAEwEAAA8AAAATAQAADwAA
ABMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAByhACIAAQBkAAEAAQABAAAAWAJYAgAAAAAAAOA/
AAAAAAAA4D8BADMAAgADAGAQCgAvHNIPyAAAACAAYBAKAC8c0g/IAAEAIQBgEAoAHBHSD6AAAQAx
AGAQCgAcEdIPoAABADIAYBAKABoT0g+qAAAANQASAAIAAAABEAIAAAACEBAAAAAAAAAAAAAAAPwA
0P/RADMQAACgAAQAAQABAGQQCABq5wAAAAABADIQBAAAAAIAMxAAAAcQDAAAAAAAAAD//wkATQAK
EBAA////AAAAAAABAAEATgBNADQQAAADEAwAAwABAAQAAwABAAAAMxAAAFEQCAAAAQAAAAAAAA0Q
LgAAABUBRgBUAFAAIABzAGUAcgB2AGUAcgAgAGYAbwByACAATQBlAG0AbwByAHkAURATAAECAACk
AAsAOwIANgA4AAEAAQBREB8AAgIAAKQAFwApEwA7AgA2ADgAAAAAADoCADgAAAAQFVEQCAADAQAA
AAAAAAYQCAD//wAAAAAAADMQAABfEAIAAAA0EAAARRACAAAANBAAAAMQDAADAAEAAwADAAEAAAAz
EAAAURAIAAABAAAAAAAAURAjAAECAACkABsAKRcAOgIANgACADoCADcAAgAQOgIAOAACABAVURAj
AAICAACkABsAKRcAOgIANgAAADoCADcAAAAQOgIAOAAAABAVURAIAAMBAAAAAAAABhAIAP//AQAB
AAAAMxAAAF8QAgAAADQQAABFEAIAAAA0EAAARBAEABoAAAAkEAIAAgAlECAAAgIBAAAAAADD////
tv///wAAAAAAAAAAsQBNABA9AAAzEAAATxAUAAIAAgAAAAAAAAAAAAAAAAAAAAAAJhACACAAURAI
AAABAAAAAAAANBAAACQQAgADACUQIAACAgEAAAAAAMP///+2////AAAAAAAAAACxAE0AED0AADMQ
AABPEBQAAgACAAAAAAAAAAAAAAAAAAAAAAAmEAIAIQBREAgAAAEAAAAAAAA0EAAARhACAAEAQRAS
AAAAcgIAAAIDAABcCwAAjAkAADMQAABPEBQAAgACAEABAABtAgAAkAwAALALAAAdEBIAAAAAAAAA
AAAAAAAAAAAAAAAAMxAAACAQCAABAAEAAQABAGIQEgAAAAAAAQAAAAEAAAAAAAAA7wAeEB4AAgAD
AQAAAAAAAAAAAAAAAAAAAAAAAAAAIwBNAAAAJhACADIANBAAAB0QEgABAAAAAAAAAAAAAAAAAAAA
AAAzEAAAHxAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAR4QHgAC
AAMBAAAAAAAAAAAAAAAAAAAAAAAAAAAjAE0AAAAmEAIAMgAhEAIAAQAHEAwAAAAAAAAA//8JAE0A
NBAAACUQIAACAgEAAAAAANkFAAAfDgAAgQQAADcBAACBAE0AAAAAADMQAABPEBQAAgACAAAAAAAA
AAAAXgAAABUAAAAmEAIAMQBREAgAAAEAAAAAAAANECIAAAAPAUsAZQByAG4AZQBsACAAVgBlAHIA
cwBpAG8AbgBzACcQBgADAAAAAAA0EAAAJRAgAAICAQAAAAAAPQAAAGIFAAACAQAAvwQAAIECTQAA
AFoAMxAAAE8QFAACAAIAAAAAAAAAAAAVAAAAUgAAACYQAgAxAFEQCAAAAQAAAAAAAA0QHAAAAAwB
UwBwAGUAZQBkACAATQBCAC8AUwBlAGMAJxAGAAIAAAAAADQQAAA1EAAAMhAEAAAAAwAzEAAABxAM
AICAgAAAAAAAAAAXAAoQEADAwMAAAAAAAAEAAAAWAE8ANBAAABQQFAAAAAAAAAAAAAAAAAAAAAAA
AAAAADMQAAAYEAIAAAAiEAoAAAAAAAAAAAAPADQQAAA0EAAAJRAgAAICAQAAAAAAyQMAAEoAAAAa
CAAANwEAAIEATQCQMAAAMxAAAE8QFAACAAIAAAAAAAAAAACpAAAAFQAAACYQAgA1AFEQCAAAAQAA
AAAAAA0QOAAAABoBRgBUAFAAIABQAGUAcgBmAG8AcgBtAGEAbgBjAGUAIABGAG8AcgAgAE0AZQBt
AG8AcgB5ACcQBgABAAAAAAA0EAAANBAAAAACDgAAAAAAAwAAAAAAAgAAAGUQAgACAGUQAgABAGUQ
AgADAAoAAAA+AhIAtgAzAAAAQAAAAAAAAAAAAAAAHQAPAAM5AAQAAAABADkAOQAEBO8ABgAFADcA
AAAKAAAACQgQAAAGEAB1J80HycAAAAYCAAALAhgAAAAAAAAAAAAhAAAA2lkBABpfAQCYXwEADQAC
AAEADAACAGQADwACAAEAEQACAAAAEAAIAPyp8dJNYlA/XwACAAEAKgACAAAAKwACAAAAggACAAEA
gAAIAAAAAAAAAAAAJQIEAAAA/wCBAAIAwQQUAAAAFQAAAIMAAgAAAIQAAgAAAE0ANhgAAFwAXABk
AGEAdABhAFwAaABwACAATABhAHMAZQByAEoAZQB0ACAAMQAzADIAMAAgAFAAQwBMACAANgAAAAAA
AAABBAAF3ABYF0P/gAcBAAEA6gpvCGQAAQAPAFgCAgACAFgCAwABAEwAZQB0AHQAZQByAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAEAAAAAAAAAAQAAAAIAAAATAQAA/////wAAAAAAAAAAAAAAAAAAAABESU5VIgAAADQCJBXb
Xa4eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAA
AAAAAAEAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkFQAASVVQSAkAEQAAAAAAAQAA
AAIAAAABAAAAAAAAAAAAAAADAAAAAAAAAAEAAAABAAIAZAABAAEAAwACAAAAAQAAAAIAAABMAGUA
dAB0AGUAcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAgAFsAbgBvAG4AZQBdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACAAWwBuAG8AbgBlAF0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAQQByAGkAYQBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAA0AAAAUAAAAAAAAAABAAAAAAAAAMDAwAAAAAAAwMDAAAAAAAAAAAAAAAAAAAAA
AAABAAAAAAAAAGQAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQEA
AAQBAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEEAQgBDAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AEEAdQB0AG8AbQBhAHQAaQBj
AD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAABAAAAAAAAAAAAAAABAAAADwAAABMBAAAAAAAADwAAABMBAAAAAAAAAwAAAAAAAAAAAAAA
DwAAABMBAAAPAAAAEwEAAAAAAAAAAAAAAAAAADYAMAAwAGQAcABpAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAEAAAsBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAAQAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAB5AHAA
ZQAgAG4AZQB3ACAAUQB1AGkAYwBrACAAUwBlAHQAIABuAGEAbQBlACAAaABlAHIAZQAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABpAAAA8QwAAAAAAAAA
AAAAagAAAC4PAAAAAAAAAAAAAJIAAAD0DAAAAAAAAAAAAACTAAAADxIAAAAAAAAAAAAAkAAAAA4S
AAAAAAAAAAAAAG0AAAD5CwAAAAAAAAAAAAACAAAALQMAAEVYQ0VMLkVYRQAAAAAAAAABAAAAAQAA
AAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAA
AQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAADwAAABMBAAAPAAAAEwEAAA8AAAAT
AQAADwAAABMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAByhACIAAQBkAAEAAQABAAIAWAJYAgAA
AAAAAOA/AAAAAAAA4D8BAFUAAgAIAH0ADAAAAAAAthMPAAIAAgB9AAwAAQABAG0MDwAGAAIAfQAM
AAIAAgBJDA8ABgACAH0ADAAEAAQAthkPAAYAAgAAAg4AAAAAACEAAAAAAAUAAAAIAhAAAAAAAAUA
/wAAAAAAAAEPAAgCEAABAAAABQD/AAAAAAAAAQ8ACAIQAAIAAAAFAP8AAAAAAAABDwAIAhAABAAA
AAUA/wAAAAAAAAEPAAgCEAAFAAAABQD/AAAAAAAAAQ8ACAIQAAYAAAAFAP8AAAAAAAABDwAIAhAA
BwAAAAUA/wAAAAAAAAEPAAgCEAAIAAAABQD/AAAAAAAAAQ8ACAIQAAkAAAAFAP8AAAAAAAABDwAI
AhAACgAAAAUA/wAAAAAAAAEPAAgCEAALAAAABQD/AAAAAAAAAQ8ACAIQAAwAAAAFAP8AAAAAAAAB
DwAIAhAADQAAAAUA/wAAAAAAAAEPAAgCEAAOAAAABQD/AAAAAAAAAQ8ACAIQAA8AAAAFAP8AAAAA
AAABDwAIAhAAEAAAAAUA/wAAAAAAAAEPAAgCEAARAAAABQD/AAAAAAAAAQ8ACAIQABIAAAAFAP8A
AAAAAAABDwAIAhAAEwAAAAUA/wAAAAAAAAEPAAgCEAAUAAAABQD/AAAAAAAAAQ8ACAIQABUAAAAF
AP8AAAAAAAABDwAIAhAAFgAAAAUA/wAAAAAAAAEPAAgCEAAXAAAABQD/AAAAAAAAAQ8ACAIQABgA
AAAFAP8AAAAAAAABDwAIAhAAGQAAAAUA/wAAAAAAAAEPAAgCEAAaAAAABQD/AAAAAAAAAQ8ACAIQ
ABsAAAAFAP8AAAAAAAABDwAIAhAAHAAAAAUA/wAAAAAAAAEPAAgCEAAdAAAABQD/AAAAAAAAAQ8A
CAIQAB4AAAAFAP8AAAAAAAABDwAIAhAAHwAAAAUA/wAAAAAAAAEPAP0ACgAAAAAAGAAIAAAAvgAK
AAAAAQAVABUAAgD9AAoAAQAAABgADgAAAL4ACgABAAEAFQAVAAIAvgAMAAIAAAAVABUAFQACAP0A
CgAEAAAAFgASAAAAAQIGAAQABAAWAP0ACgAFAAAAFwAhAAAAvgAKAAUAAQAVABUAAgD9AAoABgAA
ABkAFQAAAP0ACgAGAAEAGQAGAAAA/QAKAAYAAgAZAAcAAAD9AAoABwAAABsAFAAAAL0AEgAHAAEA
GgABQIBAGgABQHpAAgD9AAoACAAAABsAFwAAAAMCDgAIAAEAGgB/arx0kxgUQH4CCgAIAAIAGgAB
qHtA/QAKAAkAAAAbABYAAAB+AgoACQABABoAAVB7QAMCDgAJAAIAGgCoxks3iUELQAECBgAKAAQA
FgABAgYACwAEABYAAQIGAAwABAAWAAECBgANAAQAFgABAgYADgAEABYAAQIGAA8ABAAWAAECBgAQ
AAQAFgABAgYAEQAEABYAAQIGABIABAAWAAECBgATAAQAFgABAgYAFAAEABYAAQIGABUABAAWAAEC
BgAWAAQAFgABAgYAFwAEABYAAQIGABgABAAWAAECBgAZAAQAFgABAgYAGgAEABYAAQIGABsAAgAV
AP0ACgAcAAAAFwAJAAAAAQIGABwAAQAVAP0ACgAdAAAAGQAVAAAA/QAKAB0AAQAZAAYAAAD9AAoA
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
AAACAAAAEgEAAP////8AAAAAAAAAAAAAAAAAAAAARElOVSIAAAA0AkAVAIdMZgAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAArAAAAAAAAAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQBUAAElVUEgKABEAAAAAAAEAAAACAAAAAQAAAAAAAAAA
AAAAAwAAAAAAAAAAAAAAAQABAGQAAQAAAAMAAgAAAAEAAAACAAAATABlAHQAdABlAHIAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAIABbAG4AbwBuAGUAXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAgAFsAbgBvAG4AZQBdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAEEAcgBpAGEAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAANAAAAFAAAAAAAAAAAQAAAAAAAADAwMAAAAAAAMDAwAAAAAAAAAAAAAAAAAAAAAAA
AQAAAAEAAABkAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAA
AAAAAAAAAAQBAAADAQAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAABBAEIAQwAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPABBAHUAdABv
AG0AYQB0AGkAYwA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA
AQAAAAEAAAABAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAABA
AAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAQAAAA8AAAASAQAAAAAAAA8AAAASAQAAAAAAAAIA
AAAAAAAAAAAAAA8AAAASAQAADwAAABIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAPAQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAA
AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/wAABQECAAAAAAAAAAAAAAAAAAAAAAABAAAAAtXN1Zwu
GxCTlwgAKyz5rjAAAAD0AAAACQAAAAEAAABQAAAADwAAAFgAAAAXAAAAeAAAAAsAAACAAAAAEAAA
AIgAAAATAAAAkAAAABYAAACYAAAADQAAAKAAAAAMAAAA0QAAAAIAAADkBAAAHgAAABgAAABURUxF
V0FSRSBTWVNURU0gUFZUIExURAADAAAA4hkKAAsAAAAAAAAACwAAAAAAAAALAAAAAAAAAAsAAAAA
AAAAHhAAAAQAAAAHAAAATWVtb3J5AAQAAABJREUACAAAAE5ldHdvcmsABgAAAFNhbWJhAAwQAAAC
AAAAHgAAAAsAAABXb3Jrc2hlZXRzAAMAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsA
AAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAA
ABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAAAkAAAAJQAAACYAAAAnAAAA
KAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgAAAC8AAAAwAAAAMQAAADIAAAAzAAAANAAAADUAAAA2
AAAANwAAADgAAAA5AAAAOgAAADsAAAA8AAAAPQAAAD4AAAA/AAAAQAAAAEEAAABCAAAAQwAAAEQA
AABFAAAARgAAAEcAAABIAAAASQAAAEoAAABLAAAATAAAAE0AAABOAAAATwAAAFAAAABRAAAAUgAA
AFMAAABUAAAAVQAAAFYAAABXAAAAWAAAAFkAAABaAAAAWwAAAFwAAABdAAAAXgAAAF8AAABgAAAA
YQAAAGIAAABjAAAAZAAAAGUAAABmAAAAZwAAAGgAAABpAAAAagAAAGsAAABsAAAAbQAAAG4AAABv
AAAAcAAAAHEAAAByAAAAcwAAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAHoAAAB7AAAAfAAAAH0A
AAB+AAAAfwAAAIAAAACBAAAAggAAAIMAAACEAAAAhQAAAIYAAACHAAAAiAAAAIkAAACKAAAAiwAA
AIwAAACNAAAAjgAAAI8AAACQAAAAkQAAAJIAAACTAAAAlAAAAJUAAACWAAAAlwAAAJgAAACZAAAA
mgAAAJsAAACcAAAAnQAAAJ4AAACfAAAAoAAAAKEAAACiAAAAowAAAKQAAAClAAAApgAAAKcAAACo
AAAAqQAAAKoAAACrAAAArAAAAK0AAACuAAAArwAAALAAAACxAAAAsgAAALMAAAC0AAAAtQAAALYA
AAC3AAAAuAAAALkAAAC6AAAAuwAAALwAAAC9AAAAvgAAAL8AAADAAAAAwQAAAMIAAADDAAAA/v//
/8UAAADGAAAAxwAAAMgAAADJAAAAygAAAMsAAAD+////zQAAAM4AAADPAAAA0AAAANEAAADSAAAA
0wAAAP7////9/////f////7/////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
/////////////////1IAbwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUB//////////8CAAAAIAgCAAAAAADAAAAAAAAARgAAAAAA
AAAAAAAAAFCu3/0B08UB/v///wAAAAAAAAAAVwBvAHIAawBiAG8AbwBrAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAgH///////////////8AAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8YcBAAAAAAAFAFMAdQBtAG0AYQByAHkA
SQBuAGYAbwByAG0AYQB0AGkAbwBuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAACAQEAAAAD
AAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQAAAAAEAAAAAAAAAUA
RABvAGMAdQBtAGUAbgB0AFMAdQBtAG0AYQByAHkASQBuAGYAbwByAG0AYQB0AGkAbwBuAAAAAAAA
AAAAAAA4AAIB////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
zAAAAAAQAAAAAAAA
------=_Part_19809_32883783.1129548584420--

From redhatter@gentoo.org Mon Oct 17 13:36:50 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 17 Oct 2005 13:37:07 +0100 (BST)
Received: from 202-47-55-78.adsl.gil.com.au ([202.47.55.78]:58573 "EHLO
	longlandclan.hopto.org") by ftp.linux-mips.org with ESMTP
	id S8133572AbVJQMgu (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Mon, 17 Oct 2005 13:36:50 +0100
Received: (qmail 22930 invoked from network); 17 Oct 2005 22:36:40 +1000
Received: from beast.redhatters.home (HELO ?10.0.0.251?) (10.0.0.251)
  by 192.168.5.1 with SMTP; 17 Oct 2005 22:36:40 +1000
Message-ID: <43539ADF.6040504@gentoo.org>
Date:	Mon, 17 Oct 2005 22:36:47 +1000
From:	Stuart Longland <redhatter@gentoo.org>
Organization: Gentoo Foundation
User-Agent: Mozilla Thunderbird 1.0.6 (X11/20050716)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	kernel coder <lhrkernelcoder@gmail.com>
CC:	linux-mips@linux-mips.org
Subject: Re: How to improve performance of 2.6 kernel
References: <f69849430510170429t2735ed0fo3caa862c1dfea83a@mail.gmail.com>
In-Reply-To: <f69849430510170429t2735ed0fo3caa862c1dfea83a@mail.gmail.com>
X-Enigmail-Version: 0.91.0.0
OpenPGP: id=63264AB9;
	url=http://dev.gentoo.org/~redhatter/gpgkey.asc
Content-Type: multipart/signed; micalg=pgp-sha1;
 protocol="application/pgp-signature";
 boundary="------------enig288FB092469B4FFF9C58E387"
Return-Path: <redhatter@gentoo.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9238
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: redhatter@gentoo.org
Precedence: bulk
X-list: linux-mips
Content-Length: 1332
Lines: 38

This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enig288FB092469B4FFF9C58E387
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

kernel coder wrote:
> I am also attaching the benchmarks I took for both the kernels. Is
> there any way I can improve 2.6's performance? Thanks.

Hi,
	Don't mean to nitpick... but do you think it wise to use a proprietry
format like Microsoft Excel on a prodominantly Linux-user list? :-)
Tab-delimited would probably be better for distribution on a mailing list.

	How much slower are we talking here?  And in what regards?

Regards,
-- 
Stuart Longland (aka Redhatter)              .'''.
Gentoo Linux/MIPS Cobalt and Docs Developer  '.'` :
. . . . . . . . . . . . . . . . . . . . . .   .'.'
http://dev.gentoo.org/~redhatter             :.'

--------------enig288FB092469B4FFF9C58E387
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFDU5riuarJ1mMmSrkRAnC4AJwOB2ihDlBvhKBmNB+Ujf5idXpTrACeJiyd
pKge7u2fQ+CEjw9BtC3cdiE=
=qz54
-----END PGP SIGNATURE-----

--------------enig288FB092469B4FFF9C58E387--

From ralf@linux-mips.org Mon Oct 17 14:11:00 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 17 Oct 2005 14:11:20 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:53781 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133576AbVJQNLA (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Mon, 17 Oct 2005 14:11:00 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j9HDAma6011218;
	Mon, 17 Oct 2005 14:10:48 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j9HDAmWH011217;
	Mon, 17 Oct 2005 14:10:48 +0100
Date:	Mon, 17 Oct 2005 14:10:47 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	Yoann Allain <yallain@avilinks.com>
Cc:	linux-mips@linux-mips.org
Subject: Re: sti() freezes the kernel
Message-ID: <20051017131047.GF4884@linux-mips.org>
References: <4353656E.8070601@avilinks.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <4353656E.8070601@avilinks.com>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9239
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips
Content-Length: 686
Lines: 15

On Mon, Oct 17, 2005 at 10:48:46AM +0200, Yoann Allain wrote:

> I'm actually trying to start a 2.4 kernel on our new card.
> The kernel freezes when enabling interrupts with sti() in start_kernel() 
> (just before calculating BogoMips...).
> This looks like an interrupts is up when enabling so that it stops the 
> MIPS and freezes the kernel.
> I'm looking after this interrupt but I would like to know if there could 
> be any others reasons for my kernel to freeze when doing a call to sti();

This is a fairly scenario and as you suspect it's being caused by interrupt
problems, such as interrupts still pending from the firmware, being
not initialized at all or similar.

  Ralf

From yallain@avilinks.com Mon Oct 17 14:42:42 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 17 Oct 2005 14:43:00 +0100 (BST)
Received: from paris5.amen.fr ([62.193.203.10]:48905 "EHLO paris5.amen.fr")
	by ftp.linux-mips.org with ESMTP id S8133579AbVJQNmm (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Mon, 17 Oct 2005 14:42:42 +0100
Received: from firewall (77.237.98-84.rev.gaoland.net [84.98.237.77])
	by paris5.amen.fr (8.10.2/8.10.2) with ESMTP id j9HDgfB14271;
	Mon, 17 Oct 2005 15:42:41 +0200
Message-ID: <4353A98C.80508@avilinks.com>
Date:	Mon, 17 Oct 2005 15:39:24 +0200
From:	Yoann Allain <yallain@avilinks.com>
Organization: Avilinks
User-Agent: Mozilla Thunderbird 1.0 (X11/20041206)
X-Accept-Language: fr, en
MIME-Version: 1.0
To:	Ralf Baechle <ralf@linux-mips.org>
CC:	linux-mips@linux-mips.org
Subject: Re: sti() freezes the kernel
References: <4353656E.8070601@avilinks.com> <20051017131047.GF4884@linux-mips.org>
In-Reply-To: <20051017131047.GF4884@linux-mips.org>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
Return-Path: <yallain@avilinks.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9240
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: yallain@avilinks.com
Precedence: bulk
X-list: linux-mips
Content-Length: 1337
Lines: 35


Ralf Baechle a écrit :

>On Mon, Oct 17, 2005 at 10:48:46AM +0200, Yoann Allain wrote:
>
>  
>
>>I'm actually trying to start a 2.4 kernel on our new card.
>>The kernel freezes when enabling interrupts with sti() in start_kernel() 
>>(just before calculating BogoMips...).
>>This looks like an interrupts is up when enabling so that it stops the 
>>MIPS and freezes the kernel.
>>I'm looking after this interrupt but I would like to know if there could 
>>be any others reasons for my kernel to freeze when doing a call to sti();
>>    
>>
>
>This is a fairly scenario and as you suspect it's being caused by interrupt
>problems, such as interrupts still pending from the firmware, being
>not initialized at all or similar.
>
>  Ralf
>  
>
Since last mail I played with the interrupt masks (IM - bits 15-8 in 
MIPS status register) . From the MIPS cause register, it seems that the 
bit 15 (hardware interrupt 5 or timer interrupt) is the originator of 
the freezing interrupt. And the exception code shown for this interrupt 
is 6 corresponding to a Bus error exception. I think there's a pointer 
to the interrupt handler not correctly initialized. So that the 
interrupt makes a jump to nowhere.
The Bus monitors are not enabled, this is perhaps why the kernel freezes 
instead of printing the details of the exception.

Am I right?

From ralf@linux-mips.org Mon Oct 17 16:14:45 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 17 Oct 2005 16:15:02 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:7193 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133535AbVJQPOp (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Mon, 17 Oct 2005 16:14:45 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j9HFEaoL015304;
	Mon, 17 Oct 2005 16:14:36 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j9HFEalk015303;
	Mon, 17 Oct 2005 16:14:36 +0100
Date:	Mon, 17 Oct 2005 16:14:36 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	Yoann Allain <yallain@avilinks.com>
Cc:	linux-mips@linux-mips.org
Subject: Re: sti() freezes the kernel
Message-ID: <20051017151436.GH4884@linux-mips.org>
References: <4353656E.8070601@avilinks.com> <20051017131047.GF4884@linux-mips.org> <4353A98C.80508@avilinks.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <4353A98C.80508@avilinks.com>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9241
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips
Content-Length: 761
Lines: 16

On Mon, Oct 17, 2005 at 03:39:24PM +0200, Yoann Allain wrote:

> Since last mail I played with the interrupt masks (IM - bits 15-8 in 
> MIPS status register) . From the MIPS cause register, it seems that the 
> bit 15 (hardware interrupt 5 or timer interrupt) is the originator of 
> the freezing interrupt. And the exception code shown for this interrupt 
> is 6 corresponding to a Bus error exception. I think there's a pointer 
> to the interrupt handler not correctly initialized. So that the 
> interrupt makes a jump to nowhere.

In which case you should get a nice register dump with $ra pointing to
offending jalr instruction + 8 bytes.  Of course that requieres you
to get printk working even earlier but with a serial console that's
trivial.

  Ralf

From KevinK@mips.com Mon Oct 17 16:26:55 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 17 Oct 2005 16:27:10 +0100 (BST)
Received: from 209-232-97-206.ded.pacbell.net ([209.232.97.206]:16821 "EHLO
	dns0.mips.com") by ftp.linux-mips.org with ESMTP id S8133578AbVJQP0z
	(ORCPT <rfc822;linux-mips@linux-mips.org>);
	Mon, 17 Oct 2005 16:26:55 +0100
Received: from mercury.mips.com (sbcns-dmz [209.232.97.193])
	by dns0.mips.com (8.12.11/8.12.11) with ESMTP id j9HFQd3R015454;
	Mon, 17 Oct 2005 08:26:40 -0700 (PDT)
Received: from Ulysses ([192.168.2.3])
	by mercury.mips.com (8.12.9/8.12.11) with SMTP id j9HFQa17001581;
	Mon, 17 Oct 2005 08:26:37 -0700 (PDT)
Message-ID: <00b201c5d32e$2de780b0$0302a8c0@Ulysses>
From:	"Kevin D. Kissell" <KevinK@mips.com>
To:	"Stuart Longland" <redhatter@gentoo.org>,
	"kernel coder" <lhrkernelcoder@gmail.com>
Cc:	<linux-mips@linux-mips.org>
References: <f69849430510170429t2735ed0fo3caa862c1dfea83a@mail.gmail.com> <43539ADF.6040504@gentoo.org>
Subject: Re: How to improve performance of 2.6 kernel
Date:	Mon, 17 Oct 2005 17:19:31 +0200
MIME-Version: 1.0
Content-Type: text/plain;
	charset="utf-8"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1506
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1506
X-Scanned-By: MIMEDefang 2.39
Return-Path: <KevinK@mips.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9242
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: KevinK@mips.com
Precedence: bulk
X-list: linux-mips
Content-Length: 1040
Lines: 28

>kernel coder wrote:
>> I am also attaching the benchmarks I took for both the kernels. Is
>> there any way I can improve 2.6's performance? Thanks.
>
>Hi,
> Don't mean to nitpick... but do you think it wise to use a proprietry
>format like Microsoft Excel on a prodominantly Linux-user list? :-)
>Tab-delimited would probably be better for distribution on a mailing list.

There are 2D data plots that are hard to do as ASCII art. ;o)
It opened fine for me in Open Office - there was one set of graphs
that looked to be empty, but I couldn't tell if that was OO screwing
up or the way the spreadsheet went out.  But the raw data was
legible and troubling.

> How much slower are we talking here?  And in what regards?

Memory copy, network I/O, and disk I/O, by factors ranging from
about 10% to almost 50% - I'd say about 25% on the average.
If this can't be explained by a configuration error, we have a real
problem here, but if that's the case, I'm surprised no one has raised
a red flag earlier.

        Regards,

        Kevin K.



From ralf@linux-mips.org Mon Oct 17 17:07:17 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 17 Oct 2005 17:07:43 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:64524 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133583AbVJQQHR (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Mon, 17 Oct 2005 17:07:17 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j9HG79UJ017173;
	Mon, 17 Oct 2005 17:07:09 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j9HG79su017172;
	Mon, 17 Oct 2005 17:07:09 +0100
Date:	Mon, 17 Oct 2005 17:07:08 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	kernel coder <lhrkernelcoder@gmail.com>
Cc:	linux-mips@linux-mips.org
Subject: Re: How to improve performance of 2.6 kernel
Message-ID: <20051017160708.GA8613@linux-mips.org>
References: <f69849430510170429t2735ed0fo3caa862c1dfea83a@mail.gmail.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <f69849430510170429t2735ed0fo3caa862c1dfea83a@mail.gmail.com>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9243
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips
Content-Length: 846
Lines: 22

On Mon, Oct 17, 2005 at 04:29:44AM -0700, kernel coder wrote:

> I have just ported linux kernel 2.6.10 for MIPS4Kc-core board.Before
> porting 2.6 kernel ,2.4.20 was running on this board. When I took
> benchmarks for both the kernels for comparison, I found out that
> linux-2.4.20 was giving much better results than linux-2.6.10. The
> specs for the board are as follows:
> 
> --------------------------------------------------------------
> 133MHz MIPS4kc

How many TLB entries does your 4Kc have?  2.6 is hitting the TLB harder
and system that have small TLBs tend to suffer from that at the bottom
line even though all the other benefits of 2.6.

It would be interesting to see lmbench numbers for the system configurations
you've tested.  Lmbench is a well defined workload that's proven useful
in isolating such issues.

Thanks,

  Ralf

From dan@embeddedalley.com Mon Oct 17 17:33:29 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 17 Oct 2005 17:33:46 +0100 (BST)
Received: from smtp101.biz.mail.re2.yahoo.com ([68.142.229.215]:8557 "HELO
	smtp101.biz.mail.re2.yahoo.com") by ftp.linux-mips.org with SMTP
	id S8133579AbVJQQd2 (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Mon, 17 Oct 2005 17:33:28 +0100
Received: (qmail 47260 invoked from network); 17 Oct 2005 16:32:47 -0000
Received: from unknown (HELO ?192.168.2.27?) (dan@embeddedalley.com@69.21.252.132 with plain)
  by smtp101.biz.mail.re2.yahoo.com with SMTP; 17 Oct 2005 16:32:46 -0000
In-Reply-To: <00b201c5d32e$2de780b0$0302a8c0@Ulysses>
References: <f69849430510170429t2735ed0fo3caa862c1dfea83a@mail.gmail.com> <43539ADF.6040504@gentoo.org> <00b201c5d32e$2de780b0$0302a8c0@Ulysses>
Mime-Version: 1.0 (Apple Message framework v623)
Content-Type: text/plain; charset=US-ASCII; format=flowed
Message-Id: <3888b5a785ca8313b05d10eec9871fe6@embeddedalley.com>
Content-Transfer-Encoding: 7bit
Cc:	"kernel coder" <lhrkernelcoder@gmail.com>,
	<linux-mips@linux-mips.org>,
	"Stuart Longland" <redhatter@gentoo.org>
From:	Dan Malek <dan@embeddedalley.com>
Subject: Re: How to improve performance of 2.6 kernel
Date:	Mon, 17 Oct 2005 12:38:34 -0400
To:	"Kevin D. Kissell" <KevinK@mips.com>
X-Mailer: Apple Mail (2.623)
Return-Path: <dan@embeddedalley.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9244
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: dan@embeddedalley.com
Precedence: bulk
X-list: linux-mips
Content-Length: 1351
Lines: 33


On Oct 17, 2005, at 11:19 AM, Kevin D. Kissell wrote:

> If this can't be explained by a configuration error, we have a real
> problem here, but if that's the case, I'm surprised no one has raised
> a red flag earlier.

It has been discussed on other processor architecture lists.
It's been hard to justify the move from 2.4 to 2.6 on resource
challenged embedded systems, which unfortunately make up the
majority of systems running Linux.  There are various processor
specific modifications (mostly around VM, MMU, and cache
management) being attempted to bring the performance level
back up to 2.4.  If these were back ported to 2.4, I suspect the
performance difference would be even greater.

Of course, the speed and resources of workstations masks
the problems, so most developers don't "feel" the system is
any different. There isn't interest in the detailed performance
measurements we have to do on embedded systems when
we do an upgrade and realize it doesn't meet the performance
goals.  This is usually just written off with the "....  well, you have
new features .." statement, but somehow it doesn't add up.

There isn't any magic configuration option or quick fix.  You
have to take the time to dig into the details of a specific
performance issue and then try to optimize anything you can
to improve the situation.

Thanks.

	-- Dan


From pf@net.alphadv.de Mon Oct 17 19:39:43 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 17 Oct 2005 19:40:02 +0100 (BST)
Received: from mail.alphastar.de ([194.59.236.179]:54290 "EHLO
	mail.alphastar.de") by ftp.linux-mips.org with ESMTP
	id S8133593AbVJQSjn (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Mon, 17 Oct 2005 19:39:43 +0100
Received: from SNaIlmail.Peter (217.249.192.202)
          by mail.alphastar.de with MERCUR Mailserver (v4.02.28 MTIxLTIxODAtNjY2OA==)
          for <linux-mips@linux-mips.org>; Mon, 17 Oct 2005 20:36:31 +0200
Received: from Opal.Peter (Opal.Peter [192.168.1.1])
	by SNaIlmail.Peter (8.12.6/8.12.6/Sendmail/Linux 2.0.32) with ESMTP id j9HIRUkt000920
	for <linux-mips@linux-mips.org>; Mon, 17 Oct 2005 20:27:31 +0200
Received: from Opal.Peter (localhost [127.0.0.1])
	by Opal.Peter (8.12.11.Beta0/8.12.11.Beta0/Sendmail/Linux 2.4.24-1-386) with ESMTP id j9HIIITE002405
	for <linux-mips@linux-mips.org>; Mon, 17 Oct 2005 20:18:18 +0200
Received: from localhost (pf@localhost)
	by Opal.Peter (8.12.11.Beta0/8.12.11.Beta0/Debian-1) with ESMTP id j9HIIH9i002401
	for <linux-mips@linux-mips.org>; Mon, 17 Oct 2005 20:18:17 +0200
Date:	Mon, 17 Oct 2005 20:18:17 +0200 (CEST)
From:	peter fuerst <pf@net.alphadv.de>
To:	linux-mips@linux-mips.org
Subject: IP28 patches
Message-ID: <Pine.LNX.4.21.0510172008340.2374-100000@Opal.Peter>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Reply-To: pf@net.alphadv.de
Return-Path: <pf@net.alphadv.de>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9245
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: pf@net.alphadv.de
Precedence: bulk
X-list: linux-mips
Content-Length: 231
Lines: 15


Hello !


IP28-patches for the 2.6.14 kernel can now be found in the usual place:

http://home.alphastar.de/fuerst/download.html

There are also sources for the Impact driver for the IP28-Xserver, now
with DMA.

kind regards

pf


From geoman@gentoo.org Mon Oct 17 20:26:21 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 17 Oct 2005 20:26:37 +0100 (BST)
Received: from lennier.cc.vt.edu ([198.82.162.213]:1766 "EHLO
	lennier.cc.vt.edu") by ftp.linux-mips.org with ESMTP
	id S8133588AbVJQT0V (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Mon, 17 Oct 2005 20:26:21 +0100
Received: from vivi.cc.vt.edu (IDENT:mirapoint@evil-vivi.cc.vt.edu [10.1.1.12])
	by lennier.cc.vt.edu (8.12.11/8.12.11) with ESMTP id j9HJQFMQ001520;
	Mon, 17 Oct 2005 15:26:15 -0400
Received: from [128.173.184.73] (gs4073.geos.vt.edu [128.173.184.73])
	by vivi.cc.vt.edu (MOS 3.6.4-CR)
	with ESMTP id EIQ95102;
	Mon, 17 Oct 2005 15:26:13 -0400 (EDT)
Message-ID: <4353FAD2.2030901@gentoo.org>
Date:	Mon, 17 Oct 2005 15:26:10 -0400
From:	"Stephen P. Becker" <geoman@gentoo.org>
User-Agent: Mozilla Thunderbird 1.0.7 (X11/20051004)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	pf@net.alphadv.de
CC:	linux-mips@linux-mips.org
Subject: Re: IP28 patches
References: <Pine.LNX.4.21.0510172008340.2374-100000@Opal.Peter>
In-Reply-To: <Pine.LNX.4.21.0510172008340.2374-100000@Opal.Peter>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Return-Path: <geoman@gentoo.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9246
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: geoman@gentoo.org
Precedence: bulk
X-list: linux-mips
Content-Length: 394
Lines: 10

> There are also sources for the Impact driver for the IP28-Xserver, now
> with DMA.

I'm curious, is your Impact driver for ip28 still different from Stan's 
driver for ip30?  In terms of distro support and merging things 
upstream, they either need to be merged, or they need to be completely 
separate drivers with different names (e.g. impact vs. impactsr or 
something like that).

-Steve

From ddaney@avtrex.com Mon Oct 17 21:14:09 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 17 Oct 2005 21:14:30 +0100 (BST)
Received: from adsl-67-116-42-147.dsl.sntc01.pacbell.net ([67.116.42.147]:4377
	"EHLO avtrex.com") by ftp.linux-mips.org with ESMTP
	id S8133592AbVJQUOJ (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Mon, 17 Oct 2005 21:14:09 +0100
Received: from [192.168.7.26] ([192.168.7.3]) by avtrex.com with Microsoft SMTPSVC(6.0.3790.1830);
	 Mon, 17 Oct 2005 13:14:02 -0700
Message-ID: <43540609.4000105@avtrex.com>
Date:	Mon, 17 Oct 2005 13:14:01 -0700
From:	David Daney <ddaney@avtrex.com>
User-Agent: Mozilla Thunderbird 1.0.7-1.1.fc3 (X11/20050929)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	Ralf Baechle <ralf@linux-mips.org>
CC:	linux-mips@linux-mips.org
Subject: Re: OProfile cannot be loaded as module...
References: <43470BCF.1070709@avtrex.com> <20051013225520.GA3234@linux-mips.org>
In-Reply-To: <20051013225520.GA3234@linux-mips.org>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 17 Oct 2005 20:14:02.0110 (UTC) FILETIME=[50CC29E0:01C5D357]
Return-Path: <ddaney@avtrex.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9247
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ddaney@avtrex.com
Precedence: bulk
X-list: linux-mips
Content-Length: 1431
Lines: 37

Ralf Baechle wrote:
> On Fri, Oct 07, 2005 at 04:59:11PM -0700, David Daney wrote:
> 
> 
>>arch/mips/oprofile/common.c defines several symbols (op_model_mipsxx and 
>>op_model_rm9000) with __attribute__((weak)).  It then assumes that ELF 
>>linking conventions will prevail and there will be no problems if they 
>>are undefined.
>>
>>The problem is if you try to load oprofile as a module.  The kernel 
>>module linker evidentially does not understand weak symbols and refuses 
>>to load the module because they are undefined.
> 
> 
> Actually it contains code to handle weak symbols so this is a bit
> surprising not last because STB_WEAK handling happen in the generic
> module loader code and is being used by other architectures as well.
> 
> So if there's a problem with the module loader I'd prefer to solve that
> instead of starting to kludge around it.
> 

Fine, but what exactly are the semantics of __attribute__((weak)) in 
modules?  It gets resolved when linking with other objects that make up 
the module.  But what if the weak symbol can be resolved at module load 
time against symbols in either the kernel proper or other modules?  What 
happens if the weak symbol can be resolved by a symbol in a module that 
is loaded after the one with the weak symbol?  Does it get fixed up when 
the new module is loaded?


> What compiler exactly are you using btw?
> 

GCC-3.4.3 / binutils 2.16.91 20050817

David Daney.

From daney@avtrex.com Mon Oct 17 22:44:11 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Mon, 17 Oct 2005 22:44:31 +0100 (BST)
Received: from adsl-67-116-42-147.dsl.sntc01.pacbell.net ([67.116.42.147]:32533
	"EHLO avtrex.com") by ftp.linux-mips.org with ESMTP
	id S8133596AbVJQVoL (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Mon, 17 Oct 2005 22:44:11 +0100
Received: from dl2.hq2.avtrex.com (dl2.hq2.avtrex.com [127.0.0.1])
	by avtrex.com (8.13.1/8.13.1) with ESMTP id j9HLi8TW018746;
	Mon, 17 Oct 2005 14:44:08 -0700
Received: (from daney@localhost)
	by dl2.hq2.avtrex.com (8.13.1/8.13.1/Submit) id j9HLi8Ga018743;
	Mon, 17 Oct 2005 14:44:08 -0700
From:	David Daney <ddaney@avtrex.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Message-ID: <17236.6951.865559.479107@dl2.hq2.avtrex.com>
Date:	Mon, 17 Oct 2005 14:44:07 -0700
To:	oprofile-list@lists.sourceforge.net
CC:	linux-mips@linux-mips.org
Subject: [Patch] Fix lookup_dcookie for MIPS o32
X-Mailer: VM 7.19 under Emacs 21.3.1
Reply-To: ddaney@avtrex.com
Return-Path: <daney@avtrex.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9248
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ddaney@avtrex.com
Precedence: bulk
X-list: linux-mips
Content-Length: 1806
Lines: 49


This patch fixes the lookup_dcookie for the MIPS o32 ABI.  Although I
only tested with little-endian, the big-endian case needed fixing as
well but is untested (but what are the chances that this is not the
correct fix?).

This is the only patch I needed to get the user space oprofile
programs to work for mipsel-linux.

I am CCing the linux-mips list as this may be of interest there as well.

David Daney.


2005-10-17  David Daney  <ddaney@avtrex.com>

	* daemon/opd_cookie.c (lookup_dcookie): Handle MIPS o32 for both big
	and little endian.

Index: oprofile/daemon/opd_cookie.c
===================================================================
RCS file: /cvsroot/oprofile/oprofile/daemon/opd_cookie.c,v
retrieving revision 1.19
diff -p -a -u -r1.19 opd_cookie.c
--- oprofile/daemon/opd_cookie.c	26 May 2005 00:00:02 -0000	1.19
+++ oprofile/daemon/opd_cookie.c	17 Oct 2005 21:29:13 -0000
@@ -60,12 +60,21 @@
 #endif /* __NR_lookup_dcookie */
 
 #if (defined(__powerpc__) && !defined(__powerpc64__)) || defined(__hppa__)\
-	|| (defined(__s390__) && !defined(__s390x__))
+	|| (defined(__s390__) && !defined(__s390x__)) \
+	|| (defined(__mips__) && (_MIPS_SIM == _MIPS_SIM_ABI32) \
+	    && defined(_MIPSEB))
 static inline int lookup_dcookie(cookie_t cookie, char * buf, size_t size)
 {
 	return syscall(__NR_lookup_dcookie, (unsigned long)(cookie >> 32),
 		       (unsigned long)(cookie & 0xffffffff), buf, size);
 }
+#elif (defined(__mips__) && (_MIPS_SIM == _MIPS_SIM_ABI32)) /*_MIPSEL */
+static inline int lookup_dcookie(cookie_t cookie, char * buf, size_t size)
+{
+	return syscall(__NR_lookup_dcookie,
+		       (unsigned long)(cookie & 0xffffffff),
+		       (unsigned long)(cookie >> 32), buf, size);
+}
 #else
 static inline int lookup_dcookie(cookie_t cookie, char * buf, size_t size)
 {

From ralf@linux-mips.org Tue Oct 18 12:04:02 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 18 Oct 2005 12:04:19 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:51717 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133616AbVJRLEC (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 18 Oct 2005 12:04:02 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j9IB3uml010921;
	Tue, 18 Oct 2005 12:03:56 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j9IB3tac010920;
	Tue, 18 Oct 2005 12:03:55 +0100
Date:	Tue, 18 Oct 2005 12:03:55 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	David Daney <ddaney@avtrex.com>
Cc:	linux-mips@linux-mips.org
Subject: Re: OProfile cannot be loaded as module...
Message-ID: <20051018110355.GB2656@linux-mips.org>
References: <43470BCF.1070709@avtrex.com> <20051013225520.GA3234@linux-mips.org> <43540609.4000105@avtrex.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <43540609.4000105@avtrex.com>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9249
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips
Content-Length: 1459
Lines: 35

On Mon, Oct 17, 2005 at 01:14:01PM -0700, David Daney wrote:

> >>arch/mips/oprofile/common.c defines several symbols (op_model_mipsxx and 
> >>op_model_rm9000) with __attribute__((weak)).  It then assumes that ELF 
> >>linking conventions will prevail and there will be no problems if they 
> >>are undefined.
> >>
> >>The problem is if you try to load oprofile as a module.  The kernel 
> >>module linker evidentially does not understand weak symbols and refuses 
> >>to load the module because they are undefined.
> >
> >
> >Actually it contains code to handle weak symbols so this is a bit
> >surprising not last because STB_WEAK handling happen in the generic
> >module loader code and is being used by other architectures as well.
> >
> >So if there's a problem with the module loader I'd prefer to solve that
> >instead of starting to kludge around it.
> >
> 
> Fine, but what exactly are the semantics of __attribute__((weak)) in 
> modules?  It gets resolved when linking with other objects that make up 
> the module.  But what if the weak symbol can be resolved at module load 
> time against symbols in either the kernel proper or other modules?

Yes.

> What happens if the weak symbol can be resolved by a symbol in a module
> that is loaded after the one with the weak symbol?  Does it get fixed up
> when the new module is loaded?

No, it won't - and I don't think that would be a good idea.  The potencial
for bugs is just too large.

  Ralf

From ralf@linux-mips.org Tue Oct 18 12:45:33 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 18 Oct 2005 12:45:53 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:49943 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133615AbVJRLpc (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 18 Oct 2005 12:45:32 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j9IBjQGX012337;
	Tue, 18 Oct 2005 12:45:26 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j9IBjQew012336;
	Tue, 18 Oct 2005 12:45:26 +0100
Date:	Tue, 18 Oct 2005 12:45:26 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	David Daney <ddaney@avtrex.com>
Cc:	oprofile-list@lists.sourceforge.net, linux-mips@linux-mips.org
Subject: Re: [Patch] Fix lookup_dcookie for MIPS o32
Message-ID: <20051018114526.GC2656@linux-mips.org>
References: <17236.6951.865559.479107@dl2.hq2.avtrex.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <17236.6951.865559.479107@dl2.hq2.avtrex.com>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9250
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips
Content-Length: 1498
Lines: 42

On Mon, Oct 17, 2005 at 02:44:07PM -0700, David Daney wrote:

> This patch fixes the lookup_dcookie for the MIPS o32 ABI.  Although I
> only tested with little-endian, the big-endian case needed fixing as
> well but is untested (but what are the chances that this is not the
> correct fix?).
> 
> This is the only patch I needed to get the user space oprofile
> programs to work for mipsel-linux.
> 
> I am CCing the linux-mips list as this may be of interest there as well.

Good catch.

> 2005-10-17  David Daney  <ddaney@avtrex.com>
> 
> 	* daemon/opd_cookie.c (lookup_dcookie): Handle MIPS o32 for both big
> 	and little endian.
> 
> Index: oprofile/daemon/opd_cookie.c
> ===================================================================
> RCS file: /cvsroot/oprofile/oprofile/daemon/opd_cookie.c,v
> retrieving revision 1.19
> diff -p -a -u -r1.19 opd_cookie.c
> --- oprofile/daemon/opd_cookie.c	26 May 2005 00:00:02 -0000	1.19
> +++ oprofile/daemon/opd_cookie.c	17 Oct 2005 21:29:13 -0000
> @@ -60,12 +60,21 @@
>  #endif /* __NR_lookup_dcookie */
>  
>  #if (defined(__powerpc__) && !defined(__powerpc64__)) || defined(__hppa__)\
> -	|| (defined(__s390__) && !defined(__s390x__))
> +	|| (defined(__s390__) && !defined(__s390x__)) \
> +	|| (defined(__mips__) && (_MIPS_SIM == _MIPS_SIM_ABI32) \
> +	    && defined(_MIPSEB))

Small nit - please use __MIPSEB__ rsp. __MIPSEL__; I think there are
some compilers floating around that don't define the single underscore
variant.

Thanks,

  Ralf

From ddaney@avtrex.com Tue Oct 18 16:46:25 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 18 Oct 2005 16:46:45 +0100 (BST)
Received: from adsl-67-116-42-147.dsl.sntc01.pacbell.net ([67.116.42.147]:58895
	"EHLO avtrex.com") by ftp.linux-mips.org with ESMTP
	id S8133619AbVJRPqZ (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 18 Oct 2005 16:46:25 +0100
Received: from [192.168.7.26] ([192.168.7.3]) by avtrex.com with Microsoft SMTPSVC(6.0.3790.1830);
	 Tue, 18 Oct 2005 08:46:20 -0700
Message-ID: <435518CC.3060403@avtrex.com>
Date:	Tue, 18 Oct 2005 08:46:20 -0700
From:	David Daney <ddaney@avtrex.com>
User-Agent: Mozilla Thunderbird 1.0.7-1.1.fc3 (X11/20050929)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	Ralf Baechle <ralf@linux-mips.org>
CC:	linux-mips@linux-mips.org
Subject: Re: OProfile cannot be loaded as module...
References: <43470BCF.1070709@avtrex.com> <20051013225520.GA3234@linux-mips.org> <43540609.4000105@avtrex.com> <20051018110355.GB2656@linux-mips.org>
In-Reply-To: <20051018110355.GB2656@linux-mips.org>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 18 Oct 2005 15:46:20.0931 (UTC) FILETIME=[16007D30:01C5D3FB]
Return-Path: <ddaney@avtrex.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9251
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ddaney@avtrex.com
Precedence: bulk
X-list: linux-mips
Content-Length: 1086
Lines: 31

Ralf Baechle wrote:
> On Mon, Oct 17, 2005 at 01:14:01PM -0700, David Daney wrote:

>>Fine, but what exactly are the semantics of __attribute__((weak)) in 
>>modules?  It gets resolved when linking with other objects that make up 
>>the module.  But what if the weak symbol can be resolved at module load 
>>time against symbols in either the kernel proper or other modules?
> 
> 
> Yes.
> 
> 
>>What happens if the weak symbol can be resolved by a symbol in a module
>>that is loaded after the one with the weak symbol?  Does it get fixed up
>>when the new module is loaded?
> 
> 
> No, it won't - and I don't think that would be a good idea.  The potencial
> for bugs is just too large.
> 

Given your 'yes' and 'no' answers, the behavior of a module could depend 
on the order in which the modules are loaded, as they can be linked 
differently depending on which modules are already present.

That doesn't seem like a good way of doing things.

If if were up to me (and I know that it is not), I would disallow 
linking of weak symbols at module load time altogether.

David Daney.

From ivan.korzakow@gmail.com Tue Oct 18 17:00:42 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 18 Oct 2005 17:00:59 +0100 (BST)
Received: from qproxy.gmail.com ([72.14.204.204]:11040 "EHLO qproxy.gmail.com")
	by ftp.linux-mips.org with ESMTP id S8133614AbVJRQAm convert rfc822-to-8bit
	(ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 18 Oct 2005 17:00:42 +0100
Received: by qproxy.gmail.com with SMTP id q12so10157qba
        for <linux-mips@linux-mips.org>; Tue, 18 Oct 2005 09:00:40 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition;
        b=qqrxIyLIg7twgI750ynLR5UiuG+Xn5HWjJrbzPmT/mYbIP9layOlYIxm372DKWs0Tr9A+YIF8VHWvxgdgDkZIEib8bslCUCs3eMdCA0bkWCbEJBllEF1cLIaRhFPZErjc/duhhER0pW5jGaLD6U5TBL26AdCF/YXymR/NSBRpE8=
Received: by 10.65.98.20 with SMTP id a20mr3144830qbm;
        Tue, 18 Oct 2005 09:00:40 -0700 (PDT)
Received: by 10.65.97.8 with HTTP; Tue, 18 Oct 2005 09:00:40 -0700 (PDT)
Message-ID: <a59861030510180900s6041e21u@mail.gmail.com>
Date:	Tue, 18 Oct 2005 18:00:40 +0200
From:	Ivan Korzakow <ivan.korzakow@gmail.com>
To:	linux-mips@linux-mips.org
Subject: power management on mips
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8BIT
Content-Disposition: inline
Return-Path: <ivan.korzakow@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9252
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ivan.korzakow@gmail.com
Precedence: bulk
X-list: linux-mips
Content-Length: 329
Lines: 11

Hi list,

Does anyone knows what power management features are there for mips ?
I know for example that ACPI have been porting to arm. Anything
equivalent for mips ? Is it possible to do some power management under
Linux if ACPI or APM is not ported to mips ? And if yes, what would be
the work to do ?

Thanks in advance,

Ivan

From ralf@linux-mips.org Tue Oct 18 17:38:57 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 18 Oct 2005 17:39:13 +0100 (BST)
Received: from extgw-uk.mips.com ([62.254.210.129]:18202 "EHLO
	bacchus.net.dhis.org") by ftp.linux-mips.org with ESMTP
	id S8133621AbVJRQi5 (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 18 Oct 2005 17:38:57 +0100
Received: from dea.linux-mips.net (localhost.localdomain [127.0.0.1])
	by bacchus.net.dhis.org (8.13.4/8.13.1) with ESMTP id j9IGcnh0022741;
	Tue, 18 Oct 2005 17:38:49 +0100
Received: (from ralf@localhost)
	by dea.linux-mips.net (8.13.4/8.13.4/Submit) id j9IGcmBC022725;
	Tue, 18 Oct 2005 17:38:48 +0100
Date:	Tue, 18 Oct 2005 17:38:48 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	David Daney <ddaney@avtrex.com>
Cc:	linux-mips@linux-mips.org
Subject: Re: OProfile cannot be loaded as module...
Message-ID: <20051018163848.GJ2656@linux-mips.org>
References: <43470BCF.1070709@avtrex.com> <20051013225520.GA3234@linux-mips.org> <43540609.4000105@avtrex.com> <20051018110355.GB2656@linux-mips.org> <435518CC.3060403@avtrex.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <435518CC.3060403@avtrex.com>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9253
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips
Content-Length: 621
Lines: 16

On Tue, Oct 18, 2005 at 08:46:20AM -0700, David Daney wrote:

> Given your 'yes' and 'no' answers, the behavior of a module could depend 
> on the order in which the modules are loaded, as they can be linked 
> differently depending on which modules are already present.
> 
> That doesn't seem like a good way of doing things.
> 
> If if were up to me (and I know that it is not), I would disallow 
> linking of weak symbols at module load time altogether.

The semantics were choosen by Rusty who maintains the generic part of the
module loader.  Ensuring the right load order is the job of depmod
and modprobe.

  Ralf

From sjhill@realitydiluted.com Tue Oct 18 17:50:43 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 18 Oct 2005 17:50:58 +0100 (BST)
Received: from eth13.com-link.com ([208.242.241.164]:61102 "EHLO
	real.realitydiluted.com") by ftp.linux-mips.org with ESMTP
	id S8133622AbVJRQun (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 18 Oct 2005 17:50:43 +0100
Received: from sjhill by real.realitydiluted.com with local (Exim 4.52 #1 (Debian))
	id 1ERtjv-000353-Lg; Tue, 18 Oct 2005 10:50:59 -0500
Subject: Re: power management on mips
In-Reply-To: <a59861030510180900s6041e21u@mail.gmail.com>
To:	Ivan Korzakow <ivan.korzakow@gmail.com>
Date:	Tue, 18 Oct 2005 10:50:59 -0500 (CDT)
CC:	linux-mips@linux-mips.org
X-Mailer: ELM [version 2.4ME+ PL100 (25)]
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset=US-ASCII
Message-Id: <E1ERtjv-000353-Lg@real.realitydiluted.com>
From:	sjhill@realitydiluted.com
Return-Path: <sjhill@realitydiluted.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9254
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: sjhill@realitydiluted.com
Precedence: bulk
X-list: linux-mips
Content-Length: 805
Lines: 16

> Does anyone knows what power management features are there for mips ?
> I know for example that ACPI have been porting to arm. Anything
> equivalent for mips ? Is it possible to do some power management under
> Linux if ACPI or APM is not ported to mips ? And if yes, what would be
> the work to do ?
> 
I have a sudden urge to vomit all over you, maybe because you said
ACPI and MIPS in the same sentence. ACPI is pretty x86-centric. I
doubt it will ever make its way into MIPS. Dan Malek or others may
have comments on various PM schemes used in MIPS. I am surprised
that ARM adopted it, but there's a reason I no longer do ARM kernel
development. ACPI is also a lot of code adding size to your kernel
as well as additional applications. Not really great if your are
doing an embedded system.

-Steve

From earlm@mips.com Tue Oct 18 18:44:15 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 18 Oct 2005 18:44:33 +0100 (BST)
Received: from 209-232-97-206.ded.pacbell.net ([209.232.97.206]:58810 "EHLO
	dns0.mips.com") by ftp.linux-mips.org with ESMTP id S8133622AbVJRRoP convert rfc822-to-8bit
	(ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 18 Oct 2005 18:44:15 +0100
Received: from mercury.mips.com (sbcns-dmz [209.232.97.193])
	by dns0.mips.com (8.12.11/8.12.11) with ESMTP id j9IHhlH5022606;
	Tue, 18 Oct 2005 10:43:47 -0700 (PDT)
Received: from exchange.MIPS.COM (exchange [192.168.20.29])
	by mercury.mips.com (8.12.9/8.12.11) with ESMTP id j9IHhl17000016;
	Tue, 18 Oct 2005 10:43:47 -0700 (PDT)
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 8BIT
Subject: RE: power management on mips
X-MimeOLE: Produced By Microsoft Exchange V6.5.7226.0
Date:	Tue, 18 Oct 2005 10:43:48 -0700
Message-ID: <3CB54817FDF733459B230DD27C690CEC01049435@Exchange.MIPS.COM>
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Thread-Topic: power management on mips
thread-index: AcXT/UXxtjROvuI1RHqdujEOm3SmWwADcSOA
From:	"Mitchell, Earl" <earlm@mips.com>
To:	"Ivan Korzakow" <ivan.korzakow@gmail.com>,
	<linux-mips@linux-mips.org>
X-Scanned-By: MIMEDefang 2.39
Return-Path: <earlm@mips.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9255
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: earlm@mips.com
Precedence: bulk
X-list: linux-mips
Content-Length: 988
Lines: 34


APM is dead replaced by ACPI which is primarily used for x86 laptops 
I think. While back I read that MontaVista and IBM were working on 
something called Dynamic Power Mgmt (DPM). Might want to check that out? 
See links below. 

-earlm
 
http://www.linuxdevices.com/news/NS4297534594.html
http://tree.celinuxforum.org/CelfPubWiki/PowerManagementDefinitionOfTerms_5fR2
 


> -----Original Message-----
> From: linux-mips-bounce@linux-mips.org
> [mailto:linux-mips-bounce@linux-mips.org]On Behalf Of Ivan Korzakow
> Sent: Tuesday, October 18, 2005 9:01 AM
> To: linux-mips@linux-mips.org
> Subject: power management on mips
> 
> 
> Hi list,
> 
> Does anyone knows what power management features are there for mips ?
> I know for example that ACPI have been porting to arm. Anything
> equivalent for mips ? Is it possible to do some power management under
> Linux if ACPI or APM is not ported to mips ? And if yes, what would be
> the work to do ?
> 
> Thanks in advance,
> 
> Ivan
> 
> 

From ppopov@embeddedalley.com Tue Oct 18 18:53:26 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 18 Oct 2005 18:53:44 +0100 (BST)
Received: from web207.biz.mail.re2.yahoo.com ([68.142.224.169]:37737 "HELO
	web207.biz.mail.re2.yahoo.com") by ftp.linux-mips.org with SMTP
	id S8133625AbVJRRx0 (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 18 Oct 2005 18:53:26 +0100
Received: (qmail 71934 invoked by uid 60001); 18 Oct 2005 17:53:15 -0000
Message-ID: <20051018175314.71928.qmail@web207.biz.mail.re2.yahoo.com>
Received: from [161.88.255.139] by web207.biz.mail.re2.yahoo.com via HTTP; Tue, 18 Oct 2005 10:53:14 PDT
Date:	Tue, 18 Oct 2005 10:53:14 -0700 (PDT)
From:	Peter Popov <ppopov@embeddedalley.com>
Subject: RE: power management on mips
To:	"Mitchell, Earl" <earlm@mips.com>,
	Ivan Korzakow <ivan.korzakow@gmail.com>,
	linux-mips@linux-mips.org
In-Reply-To: <3CB54817FDF733459B230DD27C690CEC01049435@Exchange.MIPS.COM>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Return-Path: <ppopov@embeddedalley.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9256
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ppopov@embeddedalley.com
Precedence: bulk
X-list: linux-mips
Content-Length: 1371
Lines: 56




> I think. While back I read that MontaVista and IBM
> were working on 
> something called Dynamic Power Mgmt (DPM). Might
> want to check that out? 
> See links below. 

That's alive and well in shipping mobile phones and
perhaps other devices. However, it requires quite a
bit of work to port it to a new architecture/cpu and 
as far as I know it never went mainstream. You'll end
up with somewhat of a custom PM solution. Nothing
wrong with that, as long as you're willing to maintain
it internally as your kernel revs forward.

Pete
 
> -earlm
>  
> http://www.linuxdevices.com/news/NS4297534594.html
>
http://tree.celinuxforum.org/CelfPubWiki/PowerManagementDefinitionOfTerms_5fR2
>  
> 
> 
> > -----Original Message-----
> > From: linux-mips-bounce@linux-mips.org
> > [mailto:linux-mips-bounce@linux-mips.org]On Behalf
> Of Ivan Korzakow
> > Sent: Tuesday, October 18, 2005 9:01 AM
> > To: linux-mips@linux-mips.org
> > Subject: power management on mips
> > 
> > 
> > Hi list,
> > 
> > Does anyone knows what power management features
> are there for mips ?
> > I know for example that ACPI have been porting to
> arm. Anything
> > equivalent for mips ? Is it possible to do some
> power management under
> > Linux if ACPI or APM is not ported to mips ? And
> if yes, what would be
> > the work to do ?
> > 
> > Thanks in advance,
> > 
> > Ivan
> > 
> > 
> 
> 


From earlm@mips.com Tue Oct 18 19:01:35 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 18 Oct 2005 19:01:51 +0100 (BST)
Received: from 209-232-97-206.ded.pacbell.net ([209.232.97.206]:65210 "EHLO
	dns0.mips.com") by ftp.linux-mips.org with ESMTP id S8133625AbVJRSBf convert rfc822-to-8bit
	(ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 18 Oct 2005 19:01:35 +0100
Received: from mercury.mips.com (sbcns-dmz [209.232.97.193])
	by dns0.mips.com (8.12.11/8.12.11) with ESMTP id j9II1Ka7022727;
	Tue, 18 Oct 2005 11:01:20 -0700 (PDT)
Received: from exchange.MIPS.COM (exchange [192.168.20.29])
	by mercury.mips.com (8.12.9/8.12.11) with ESMTP id j9II1I17000733;
	Tue, 18 Oct 2005 11:01:18 -0700 (PDT)
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 8BIT
Subject: RE: power management on mips
X-MimeOLE: Produced By Microsoft Exchange V6.5.7226.0
Date:	Tue, 18 Oct 2005 11:01:18 -0700
Message-ID: <3CB54817FDF733459B230DD27C690CEC01049437@Exchange.MIPS.COM>
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Thread-Topic: power management on mips
thread-index: AcXUDQcWjrlrWVtwQbyMeZv/U4DdxAAABCKQ
From:	"Mitchell, Earl" <earlm@mips.com>
To:	"Peter Popov" <ppopov@embeddedalley.com>,
	"Ivan Korzakow" <ivan.korzakow@gmail.com>,
	<linux-mips@linux-mips.org>
X-Scanned-By: MIMEDefang 2.39
Return-Path: <earlm@mips.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9257
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: earlm@mips.com
Precedence: bulk
X-list: linux-mips
Content-Length: 1862
Lines: 73


True. PDAs and mobile devices also use it. 
So it may be supported for platforms like
AMD's Alchemy (e.g. they have a PDA reference design).

-earlm

> -----Original Message-----
> From: linux-mips-bounce@linux-mips.org
> [mailto:linux-mips-bounce@linux-mips.org]On Behalf Of Peter Popov
> Sent: Tuesday, October 18, 2005 10:53 AM
> To: Mitchell, Earl; Ivan Korzakow; linux-mips@linux-mips.org
> Subject: RE: power management on mips
> 
> 
> 
> 
> 
> > I think. While back I read that MontaVista and IBM
> > were working on 
> > something called Dynamic Power Mgmt (DPM). Might
> > want to check that out? 
> > See links below. 
> 
> That's alive and well in shipping mobile phones and
> perhaps other devices. However, it requires quite a
> bit of work to port it to a new architecture/cpu and 
> as far as I know it never went mainstream. You'll end
> up with somewhat of a custom PM solution. Nothing
> wrong with that, as long as you're willing to maintain
> it internally as your kernel revs forward.
> 
> Pete
>  
> > -earlm
> >  
> > http://www.linuxdevices.com/news/NS4297534594.html
> >
> http://tree.celinuxforum.org/CelfPubWiki/PowerManagementDefini
tionOfTerms_5fR2
>  
> 
> 
> > -----Original Message-----
> > From: linux-mips-bounce@linux-mips.org
> > [mailto:linux-mips-bounce@linux-mips.org]On Behalf
> Of Ivan Korzakow
> > Sent: Tuesday, October 18, 2005 9:01 AM
> > To: linux-mips@linux-mips.org
> > Subject: power management on mips
> > 
> > 
> > Hi list,
> > 
> > Does anyone knows what power management features
> are there for mips ?
> > I know for example that ACPI have been porting to
> arm. Anything
> > equivalent for mips ? Is it possible to do some
> power management under
> > Linux if ACPI or APM is not ported to mips ? And
> if yes, what would be
> > the work to do ?
> > 
> > Thanks in advance,
> > 
> > Ivan
> > 
> > 
> 
> 



From ppopov@embeddedalley.com Tue Oct 18 19:12:50 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 18 Oct 2005 19:13:11 +0100 (BST)
Received: from web201.biz.mail.re2.yahoo.com ([68.142.224.163]:37551 "HELO
	web201.biz.mail.re2.yahoo.com") by ftp.linux-mips.org with SMTP
	id S3465647AbVJRSMu (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 18 Oct 2005 19:12:50 +0100
Received: (qmail 90192 invoked by uid 60001); 18 Oct 2005 18:12:43 -0000
Message-ID: <20051018181243.90190.qmail@web201.biz.mail.re2.yahoo.com>
Received: from [161.88.255.139] by web201.biz.mail.re2.yahoo.com via HTTP; Tue, 18 Oct 2005 11:12:42 PDT
Date:	Tue, 18 Oct 2005 11:12:42 -0700 (PDT)
From:	Peter Popov <ppopov@embeddedalley.com>
Subject: RE: power management on mips
To:	"Mitchell, Earl" <earlm@mips.com>,
	Ivan Korzakow <ivan.korzakow@gmail.com>,
	linux-mips@linux-mips.org
In-Reply-To: <3CB54817FDF733459B230DD27C690CEC01049437@Exchange.MIPS.COM>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Return-Path: <ppopov@embeddedalley.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9258
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ppopov@embeddedalley.com
Precedence: bulk
X-list: linux-mips
Content-Length: 517
Lines: 19



--- "Mitchell, Earl" <earlm@mips.com> wrote:

> 
> True. PDAs and mobile devices also use it. 
> So it may be supported for platforms like
> AMD's Alchemy (e.g. they have a PDA reference
> design).


Yes, although I don't think AMD recommends switching
frequencies anymore. I think they rate/test the chip
only at its advertised speed. So static power
management could be implemented but Dynamic Power
Management (where most of the complexity is anyway)
would probably not be recommended by the manufacturer.

Pete

From drow@nevyn.them.org Tue Oct 18 19:15:33 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 18 Oct 2005 19:15:50 +0100 (BST)
Received: from nevyn.them.org ([66.93.172.17]:43244 "EHLO nevyn.them.org")
	by ftp.linux-mips.org with ESMTP id S8133630AbVJRSPd (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Tue, 18 Oct 2005 19:15:33 +0100
Received: from drow by nevyn.them.org with local (Exim 4.54)
	id 1ERvzm-0004mE-PP; Tue, 18 Oct 2005 14:15:30 -0400
Date:	Tue, 18 Oct 2005 14:15:30 -0400
From:	Daniel Jacobowitz <dan@debian.org>
To:	Ivan Korzakow <ivan.korzakow@gmail.com>
Cc:	linux-mips@linux-mips.org
Subject: Re: power management on mips
Message-ID: <20051018181530.GA18333@nevyn.them.org>
References: <a59861030510180900s6041e21u@mail.gmail.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <a59861030510180900s6041e21u@mail.gmail.com>
User-Agent: Mutt/1.5.8i
Return-Path: <drow@nevyn.them.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9259
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: dan@debian.org
Precedence: bulk
X-list: linux-mips
Content-Length: 197
Lines: 8

On Tue, Oct 18, 2005 at 06:00:40PM +0200, Ivan Korzakow wrote:
> I know for example that ACPI have been porting to arm.

As far as I know, that's not true.

-- 
Daniel Jacobowitz
CodeSourcery, LLC

From movement@trollied.org Wed Oct 19 00:25:22 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 19 Oct 2005 00:25:38 +0100 (BST)
Received: from [194.216.112.127] ([194.216.112.127]:20874 "EHLO trollied.org")
	by ftp.linux-mips.org with ESMTP id S8133620AbVJRXZW (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Wed, 19 Oct 2005 00:25:22 +0100
Received: from localhost ([127.0.0.1] helo=trollied.org)
	by trollied.org with esmtps (TLSv1:AES256-SHA:256)
	(Exim 4.43)
	id 1ES0p0-0000AN-SF; Wed, 19 Oct 2005 00:24:42 +0100
Received: (from movement@localhost)
	by trollied.org (8.12.11/8.12.11/Submit) id j9INOgqc000642;
	Wed, 19 Oct 2005 00:24:42 +0100
Date:	Wed, 19 Oct 2005 00:24:42 +0100
From:	John Levon <levon@movementarian.org>
To:	Ralf Baechle <ralf@linux-mips.org>
Cc:	David Daney <ddaney@avtrex.com>,
	oprofile-list@lists.sourceforge.net, linux-mips@linux-mips.org
Subject: Re: [Patch] Fix lookup_dcookie for MIPS o32
Message-ID: <20051018232442.GA29235@trollied.org>
References: <17236.6951.865559.479107@dl2.hq2.avtrex.com> <20051018114526.GC2656@linux-mips.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20051018114526.GC2656@linux-mips.org>
X-Url:	http://www.movementarian.org/
User-Agent: Mutt/1.5.9i
Return-Path: <movement@trollied.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9260
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: levon@movementarian.org
Precedence: bulk
X-list: linux-mips
Content-Length: 217
Lines: 10

On Tue, Oct 18, 2005 at 12:45:26PM +0100, Ralf Baechle wrote:

> > +	    && defined(_MIPSEB))
> 
> Small nit - please use __MIPSEB__ rsp. __MIPSEL__; I think there are

I made it so; David, please check.

thanks
john

From ddaney@avtrex.com Wed Oct 19 00:35:54 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 19 Oct 2005 00:36:10 +0100 (BST)
Received: from adsl-67-116-42-147.dsl.sntc01.pacbell.net ([67.116.42.147]:14347
	"EHLO avtrex.com") by ftp.linux-mips.org with ESMTP
	id S8133620AbVJRXfy (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Wed, 19 Oct 2005 00:35:54 +0100
Received: from [192.168.7.26] ([192.168.7.3]) by avtrex.com with Microsoft SMTPSVC(6.0.3790.1830);
	 Tue, 18 Oct 2005 16:35:52 -0700
Message-ID: <435586D8.4040407@avtrex.com>
Date:	Tue, 18 Oct 2005 16:35:52 -0700
From:	David Daney <ddaney@avtrex.com>
User-Agent: Mozilla Thunderbird 1.0.7-1.1.fc3 (X11/20050929)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To:	John Levon <levon@movementarian.org>
CC:	Ralf Baechle <ralf@linux-mips.org>,
	oprofile-list@lists.sourceforge.net, linux-mips@linux-mips.org
Subject: Re: [Patch] Fix lookup_dcookie for MIPS o32
References: <17236.6951.865559.479107@dl2.hq2.avtrex.com> <20051018114526.GC2656@linux-mips.org> <20051018232442.GA29235@trollied.org>
In-Reply-To: <20051018232442.GA29235@trollied.org>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 18 Oct 2005 23:35:52.0769 (UTC) FILETIME=[ADB9D310:01C5D43C]
Return-Path: <ddaney@avtrex.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9261
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ddaney@avtrex.com
Precedence: bulk
X-list: linux-mips
Content-Length: 378
Lines: 16

John Levon wrote:
> On Tue, Oct 18, 2005 at 12:45:26PM +0100, Ralf Baechle wrote:
> 
> 
>>>+	    && defined(_MIPSEB))
>>
>>Small nit - please use __MIPSEB__ rsp. __MIPSEL__; I think there are
> 
> 
> I made it so; David, please check.
> 

I just did a cvs update and see no change.  Perhaps I misunderstand. 
Would you like me to make and test a patch?  I could...

David Daney

From movement@trollied.org Wed Oct 19 00:37:32 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 19 Oct 2005 00:37:47 +0100 (BST)
Received: from [194.216.112.127] ([194.216.112.127]:41355 "EHLO trollied.org")
	by ftp.linux-mips.org with ESMTP id S8133620AbVJRXhc (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Wed, 19 Oct 2005 00:37:32 +0100
Received: from localhost ([127.0.0.1] helo=trollied.org)
	by trollied.org with esmtps (TLSv1:AES256-SHA:256)
	(Exim 4.43)
	id 1ES10n-0007GH-RN; Wed, 19 Oct 2005 00:36:53 +0100
Received: (from movement@localhost)
	by trollied.org (8.12.11/8.12.11/Submit) id j9INarUd027916;
	Wed, 19 Oct 2005 00:36:53 +0100
Date:	Wed, 19 Oct 2005 00:36:53 +0100
From:	John Levon <levon@movementarian.org>
To:	David Daney <ddaney@avtrex.com>
Cc:	Ralf Baechle <ralf@linux-mips.org>,
	oprofile-list@lists.sourceforge.net, linux-mips@linux-mips.org
Subject: Re: [Patch] Fix lookup_dcookie for MIPS o32
Message-ID: <20051018233653.GA1044@trollied.org>
References: <17236.6951.865559.479107@dl2.hq2.avtrex.com> <20051018114526.GC2656@linux-mips.org> <20051018232442.GA29235@trollied.org> <435586D8.4040407@avtrex.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <435586D8.4040407@avtrex.com>
X-Url:	http://www.movementarian.org/
User-Agent: Mutt/1.5.9i
Return-Path: <movement@trollied.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9262
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: levon@movementarian.org
Precedence: bulk
X-list: linux-mips
Content-Length: 240
Lines: 8

On Tue, Oct 18, 2005 at 04:35:52PM -0700, David Daney wrote:

> I just did a cvs update and see no change.  Perhaps I misunderstand. 
> Would you like me to make and test a patch?  I could...

anoncvs takes a while to update I think.

john

From lhrkernelcoder@gmail.com Wed Oct 19 06:55:05 2005
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 19 Oct 2005 06:55:26 +0100 (BST)
Received: from wproxy.gmail.com ([64.233.184.198]:42657 "EHLO wproxy.gmail.com")
	by ftp.linux-mips.org with ESMTP id S3465550AbVJSFzF (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Wed, 19 Oct 2005 06:55:05 +0100
Received: by wproxy.gmail.com with SMTP id i6so119740wra
        for <linux-mips@linux-mips.org>; Tue, 18 Oct 2005 22:55:01 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:references;
        b=hmBPjKhFeyR+uALXmYZ+aY85VdbEKyaB55XsConUfuuLcCYgIU0PDSju/k39pCcQCtzFMeW9SyfvuA+zeMAplyy6gnGXVvH6CoQ4NkolGYsocraUdErgrPTwCuQOafgrMGndVMVw9RgbN6plcjGGA2UIMK8dZlR77OnXVWhUTug=
Received: by 10.54.125.2 with SMTP id x2mr449923wrc;
        Tue, 18 Oct 2005 22:55:01 -0700 (PDT)
Received: by 10.54.147.11 with HTTP; Tue, 18 Oct 2005 22:55:01 -0700 (PDT)
Message-ID: <f69849430510182255m59d62726h7a4b9c96e1a7f07c@mail.gmail.com>
Date:	Wed, 19 Oct 2005 10:55:01 +0500
From:	kernel coder <lhrkernelcoder@gmail.com>
To:	linux-mips@linux-mips.org
Subject: Fwd: How to improve performance of 2.6 kernel
In-Reply-To: <3888b5a785ca8313b05d10eec9871fe6@embeddedalley.com>
MIME-Version: 1.0
Content-Type: multipart/mixed; 
	boundary="----=_Part_16609_1879135.1129701301493"
References: <f69849430510170429t2735ed0fo3caa862c1dfea83a@mail.gmail.com>
	 <43539ADF.6040504@gentoo.org> <00b201c5d32e$2de780b0$0302a8c0@Ulysses>
	 <3888b5a785ca8313b05d10eec9871fe6@embeddedalley.com>
Return-Path: <lhrkernelcoder@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 9263
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: lhrkernelcoder@gmail.com
Precedence: bulk
X-list: linux-mips
Content-Length: 359539
Lines: 4708

------=_Part_16609_1879135.1129701301493
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Hi,

I did lmbench benchmarks tests... and the results i got were pretty
weird.. I am attaching the jpegs :) of the graphs i made in MS Excel.
Btw, I have implemented NAPI in both 2.4.20 and 2.6.10. I ported the
code to linux-2.6 in order to increase the board's efficiency but I'm
quite dissapointed with the results so far :(.



---------- Forwarded message ----------
From: Dan Malek <dan@embeddedalley.com>
Date: Oct 17, 2005 9:38 PM
Subject: Re: How to improve performance of 2.6 kernel
To: "Kevin D. Kissell" <KevinK@mips.com>
Cc: kernel coder <lhrkernelcoder@gmail.com>,
linux-mips@linux-mips.org, Stuart Longland <redhatter@gentoo.org>



On Oct 17, 2005, at 11:19 AM, Kevin D. Kissell wrote:

> If this can't be explained by a configuration error, we have a real
> problem here, but if that's the case, I'm surprised no one has raised
> a red flag earlier.

It has been discussed on other processor architecture lists.
It's been hard to justify the move from 2.4 to 2.6 on resource
challenged embedded systems, which unfortunately make up the
majority of systems running Linux.  There are various processor
specific modifications (mostly around VM, MMU, and cache
management) being attempted to bring the performance level
back up to 2.4.  If these were back ported to 2.4, I suspect the
performance difference would be even greater.

Of course, the speed and resources of workstations masks
the problems, so most developers don't "feel" the system is
any different. There isn't interest in the detailed performance
measurements we have to do on embedded systems when
we do an upgrade and realize it doesn't meet the performance
goals.  This is usually just written off with the "....  well, you have
new features .." statement, but somehow it doesn't add up.

There isn't any magic configuration option or quick fix.  You
have to take the time to dig into the details of a specific
performance issue and then try to optimize anything you can
to improve the situation.

Thanks.

        -- Dan

------=_Part_16609_1879135.1129701301493
Content-Type: image/jpeg; name="diagram1.JPG"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="diagram1.JPG"

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAMABAADASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwC8msPC
Gt7bQNIlitYbYSXF1Nbw5eSLeOZAMk4buelXXn1mL7J5nhHQ0+2Y+y7ryzHn5xjZ/e+8OnqPWsF7
3T7LSvEEt9ZfbGJ01LeMn5RIbeQZb227xxzyMFThlz/Dj6faeJtG1OfzbrSY7iOKLzrnZ9hkL7gJ
DjGFJdxjar4J4IdByTxE1Nrm6+Xf0PMlXmp25uvlprbsdpo9/Dq+lQ3w0fTYhLu+T7LG2MMR12+1
XtkX/QM03/wDj/8AiapeBbYyeDbBsdfM/wDRjVB4yln059FkgJBW8aaRQCS8aQyM64HXIB/HFd9K
d6cW97I7qUnKEW+yNTZF/wBAzTf/AADj/wDiaNkX/QM03/wDj/8Aia5NtUnuJvFd5bSwywDTVuLV
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
gnopJ6A1g+NvFup+HUtotH8O6hrF3Kyu4ht5GijjB+bLqpG4gEAdup4wG6DS79dTGkXqW9zbiaXd
5N1CYpYzsfIZTyCD+B6gkYNMDy1/9dL/ANdG/wDQjSUr/wCul/66N/6EaSkAUUUUAFFFFABRRRQA
UUUUAFFFFABH/wAhPSP+wrY/+lMde/14BH/yE9I/7Ctj/wClMde/0AFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFAHP+O/+SeeJf8AsFXX/opq8A8Ef8ihY/8AbT/0Y1e/+O/+SeeJf+wVdf8Aopq8A8Ef
8ihY/wDbT/0Y1AHQUUUUAFFFFABRRRQAUUUUAFFFFABW54PLDxTZFFDON+0E4BOxu/asOt7wZ/yN
th9X/wDQGoYHf+Vff887P/wKP/xNEcdwNQsTN9mVRMceXMXJOxuMbR7n8KfTB/yEdP8A+u5/9Aem
wPI3/wBdL/10b/0I0lK/+ul/66N/6EaSkAUUUUAFFFFABRRRQAUUUUAFFFFABH/yE9I/7Ctj/wCl
Mde/14BH/wAhPSP+wrY/+lMde/0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHP+O/8AknniX/sF
XX/opq8A8Ef8ihY/9tP/AEY1e/8Ajv8A5J54l/7BV1/6KavAPBH/ACKFj/20/wDRjUAdBRRRQAUU
UUAFFFFABRRRQAUUUUAFb3gz/kbbD6v/AOgNWDW94M/5G2w+r/8AoDUAehUwf8hHT/8Aruf/AEB6
fTB/yEdP/wCu5/8AQHpvYDyN/wDXS/8AXRv/AEI0lK/+ul/66N/6EaSkAUUUUAFFFFABRRRQAUUU
UAFFFFABH/yE9I/7Ctj/AOlMde/14BH/AMhPSP8AsK2P/pTHXv8AQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAc/wCO/wDknniX/sFXX/opq8A8Ef8AIoWP/bT/ANGNXv8A47/5J54l/wCwVdf+imrw
DwR/yKFj/wBtP/RjUAdBRRRQAUUUUAFFFFABRRRQAUUUUAFb3gz/AJG2w+r/APoDVg1veDP+RtsP
q/8A6A1AHoVMH/IR0/8A67n/ANAen0wf8hHT/wDruf8A0B6b2A8jf/XS/wDXRv8A0I0lK/8Arpf+
ujf+hGkpAFFFFABRRRQAUUUUAFFFFABRRRQAR/8AIT0j/sK2P/pTHXv9eAR/8hPSP+wrY/8ApTHX
v9ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBz/jv/knniX/ALBV1/6KavAPBH/IoWP/AG0/9GNX
v/jv/knniX/sFXX/AKKavAPBH/IoWP8A20/9GNQB0FFFFABRRRQAUUUUAFFFFABRRRQAVveDP+Rt
sPq//oDVg1veDP8AkbbD6v8A+gNQB6FTB/yEdP8A+u5/9Aen0wf8hHT/APruf/QHpvYDyN/9dL/1
0b/0I0lK/wDrpf8Aro3/AKEaSkAUUUUAFFFFABRRRQAUUUUAFFFFABH/AMhPSP8AsK2P/pTHXv8A
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
ZLMeAMAf5JJoA5L4PXDx+IPiBpKxlba11uSSNuxLO6kD6CNfzr1avP8A4R6Tc2vhi71m+gaC8129
l1F4mOSiufkH5c/8Cr0CgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACufvP+Sh6N/2
Cr//ANG2ldBXP3n/ACUPRv8AsFX/AP6NtKAOgooooAKKKKACiiigDn/Hf/JPPEv/AGCrr/0U1eAe
CP8AkULH/tp/6Mavf/Hf/JPPEv8A2Crr/wBFNXgHgj/kULH/ALaf+jGoA6CiiigAooooAKKKKACi
iigAooooAK3vBn/I22H1f/0Bqwa3vBn/ACNth9X/APQGoA9Cpg/5COn/APXc/wDoD0+mD/kI6f8A
9dz/AOgPTewHkb/66X/ro3/oRpKV/wDXS/8AXRv/AEI0lIAooooAKKKKACiiigAooooAKKKKACP/
AJCekf8AYVsf/SmOvf68Aj/5Cekf9hWx/wDSmOvf6ACiiigAooooAKKKKAOf8G/8gO5/7Cupf+ls
1dBXP+Df+QHc/wDYV1L/ANLZq6CgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAqK4t4Ly2ltrmGOeCVSkkUqhldTwQQeCPapaKAGoiRRrHGqoigKqqMAA
dABTqKKACiiigAooooAKhurS2vrWS1u7eK4t5RtkimQOjj0IPBFTUUAIAFAAAAHAApaKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAK5+8/5KHo3/AGCr/wD9G2ldBXP3n/JQ9G/7BV//
AOjbSgDoKKKKACiiigAooooA5/x3/wAk88S/9gq6/wDRTV4B4I/5FCx/7af+jGr3/wAd/wDJPPEv
/YKuv/RTV4B4I/5FCx/7af8AoxqAOgooooAKKKKACiiigAooooAKKKKACt7wZ/yNth9X/wDQGrBr
e8Gf8jbYfV//AEBqAPQqYP8AkI6f/wBdz/6A9Ppg/wCQjp//AF3P/oD03sB5G/8Arpf+ujf+hGkp
X/10v/XRv/QjSUgCiiigAooooAKKKKACiiigAooooAI/+QnpH/YVsf8A0pjr3+vAI/8AkJ6R/wBh
Wx/9KY69/oAKKKKACiiigAooooA5/wAG/wDIDuf+wrqX/pbNXQVz/g3/AJAdz/2FdS/9LZq6CgAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACufvP8Akoej
f9gq/wD/AEbaV0Fc/ef8lD0b/sFX/wD6NtKAOgooooAKKKKACiiigDn/AB3/AMk88S/9gq6/9FNX
gHgj/kULH/tp/wCjGr3/AMd/8k88S/8AYKuv/RTV4B4I/wCRQsf+2n/oxqAOgooooAKKKKACiiig
AooooAKKKKACt7wZ/wAjbYfV/wD0Bqwa3vBn/I22H1f/ANAagD0KmD/kI6f/ANdz/wCgPT6YP+Qj
p/8A13P/AKA9N7AeRv8A66X/AK6N/wChGkpX/wBdL/10b/0I0lIAooooAKKKKACiiigAooooAKKK
KACP/kJ6R/2FbH/0pjr3+vAI/wDkJ6R/2FbH/wBKY69/oAKKKKACiiigAooooA5/wb/yA7n/ALCu
pf8ApbNXQVz/AIN/5Adz/wBhXUv/AEtmroKACiiigArE8Ya4/hvwjqerRKjz28JMCSAlXlPyopAI
JyxAwOea26wfFulaVrWlQWGsag9nbyXcJQpcCFpZAwZIwx5ySBwuG44IoAzNCPxIbVrc6+PCo0wh
jMLH7R54+U7du/5fvYzntmqNx4o8ZajLfah4a0jSbjRbKaWHbdXDrcXpj4YxYG1RvDKN3XGeM1U1
Xw/Z+Bdf8PX3hqK6jm1PV0s76F7yWVZ4nRyzsJGbldgbI54xnmtH4TxyWPwzs7a9lDXFpPdx3LFi
fnW4l3Ek8+/NAHU6Hq8GvaDYatbBlhvIEmVW6ruGcH3HT8K0K4j4Q21xa/CnQI7lt0hheQHJPyPI
zJ1/2SK6vUpNSit1bS7S0uZ94DJdXLQKFweQyxuSc44x3PPHIBcorkLnxTrmnava6fqOiacjXME0
8b2+pvIAI2jUghoFx/rRjr0NWP8AhKbz/oGQf+BZ/wDjdAHT0VzH/CU3n/QMg/8AAs//ABuj/hKb
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
qaH/AOC6H/4mj/hBPB//AEKmh/8Aguh/+JoAP+EE8H/9Cpof/guh/wDiaP8AhBPB/wD0Kmh/+C6H
/wCJo/4QTwf/ANCpof8A4Lof/iaP+EE8H/8AQqaH/wCC6H/4mgA/4QTwf/0Kmh/+C6H/AOJo/wCE
E8H/APQqaH/4Lof/AImj/hBPB/8A0Kmh/wDguh/+Jo/4QTwf/wBCpof/AILof/iaAD/hBPB//Qqa
H/4Lof8A4mj/AIQTwf8A9Cpof/guh/8AiaP+EE8H/wDQqaH/AOC6H/4mj/hBPB//AEKmh/8Aguh/
+JoAP+EE8H/9Cpof/guh/wDiaz7fQtH0T4h6X/ZOlWNh52lX3mfZLdIt+JbTGdoGcZPX1NaH/CCe
D/8AoVND/wDBdD/8TVzTfDWg6NcNcaXomm2M7IUaS1tUiYrkHBKgHGQDj2FAGpRRRQAUUUUAFFFF
AHP+O/8AknniX/sFXX/opq8A8Ef8ihY/9tP/AEY1e/8Ajv8A5J54l/7BV1/6KavAPBH/ACKFj/20
/wDRjUAdBRRRQAUUUUAFFFFABRRRQAUUUUAFb3gz/kbbD6v/AOgNWDW94M/5G2w+r/8AoDUAehUw
f8hHT/8Aruf/AEB6fTB/yEdP/wCu5/8AQHpvYDyN/wDXS/8AXRv/AEI0lK/+ul/66N/6EaSkAUUU
UAFFFFABRRRQAUUUUAFFFFABH/yE9I/7Ctj/AOlMde/14BH/AMhPSP8AsK2P/pTHXv8AQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAc/wCO/wDknniX/sFXX/opq8A8Ef8AIoWP/bT/ANGNXv8A47/5
J54l/wCwVdf+imrwDwR/yKFj/wBtP/RjUAdBRRRQAUUUUAFFFFABRRRQAUUUUAFb3gz/AJG2w+r/
APoDVg1veDP+RtsPq/8A6A1AHoVMH/IR0/8A67n/ANAen0wf8hHT/wDruf8A0B6b2A8jf/XS/wDX
Rv8A0I0lK/8Arpf+ujf+hGkpAFFFFABRRRQAUUUUAFFFFABRRRQAR/8AIT0j/sK2P/pTHXv9eAR/
8hPSP+wrY/8ApTHXv9ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBz/jv/knniX/ALBV1/6KavAP
BH/IoWP/AG0/9GNXv/jv/knniX/sFXX/AKKavAPBH/IoWP8A20/9GNQB0FFFFABRRRQAUUUUAFFF
FABRRRQAVveDP+RtsPq//oDVg1veDP8AkbbD6v8A+gNQB6FTB/yEdP8A+u5/9Aen0wf8hHT/APru
f/QHpvYDyN/9dL/10b/0I0lK/wDrpf8Aro3/AKEaSkAUUUUAFFFFABRRRQAUUUUAFFFFABH/AMhP
SP8AsK2P/pTHXv8AXgEf/IT0j/sK2P8A6Ux17/QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAc/4
7/5J54l/7BV1/wCimrwDwR/yKFj/ANtP/RjV7/47/wCSeeJf+wVdf+imrwDwR/yKFj/20/8ARjUA
dBRRRQAUUUUAFFFFABRRRQAUUUUAFb3gz/kbbD6v/wCgNWDW94M/5G2w+r/+gNQB6FTB/wAhHT/+
u5/9Aen0wf8AIR0//ruf/QHpvYDyN/8AXS/9dG/9CNJSv/rpf+ujf+hGkpAFFFFABRRRQAUUUUAF
FFFABRRRQAR/8hPSP+wrY/8ApTHXv9eAR/8AIT0j/sK2P/pTHXv9ABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQBz/jv/AJJ54l/7BV1/6KavAPBH/IoWP/bT/wBGNXv/AI7/AOSeeJf+wVdf+imrwDwR
/wAihY/9tP8A0Y1AHQUUUUAFFFFABRRRQAUUUUAFFFFABW94M/5G2w+r/wDoDVg1r+F4GufEdpCk
8sDPvHmREBl+RuhIOPrigD0mmD/kI6f/ANdz/wCgPVP/AIR+Pvr+qf8Af0f/ABH1qWz0qGy1OzlO
q390xkKpHK6lc7DyflHYHoe496GwPKn/ANdL/wBdG/8AQjSV2o8BI2WfWEVmJYgW7EAk5xnPNL/w
gEX/AEGV/wDAY/40AcTRXbf8IBF/0GV/8Bj/AI0f8IBF/wBBlf8AwGP+NAHE0V23/CARf9Blf/AY
/wCNH/CARf8AQZX/AMBj/jQBxNFdt/wgEX/QZX/wGP8AjR/wgEX/AEGV/wDAY/40AcTRXbf8IBF/
0GV/8Bj/AI0f8IBF/wBBlf8AwGP+NAHE0V23/CARf9Blf/AY/wCNH/CARf8AQZX/AMBj/jQBwsky
21zp9zIJDFb6haTSeXGzsESeNmIVQScAE8DtXof/AAu34ef9DD/5JXH/AMbqt/wgEX/QZX/wGP8A
jWf/AMKj0L/npp//AILhQBs/8Lt+Hn/Qw/8Aklcf/G6P+F2/Dz/oYf8AySuP/jdY3/Co9C/56af/
AOC4Uf8ACo9C/wCemn/+C4UAbP8Awu34ef8AQw/+SVx/8bo/4Xb8PP8AoYf/ACSuP/jdY3/Co9C/
56af/wCC4Uf8Kj0L/npp/wD4LhQBs/8AC7fh5/0MP/klcf8Axuj/AIXb8PP+hh/8krj/AON1jf8A
Co9C/wCemn/+C4Uf8Kj0L/npp/8A4LhQBs/8Lt+Hn/Qw/wDklcf/ABuj/hdvw8/6GH/ySuP/AI3W
N/wqPQv+emn/APguFH/Co9C/56af/wCC4UAbP/C7fh5/0MP/AJJXH/xuj/hdvw8/6GH/AMkrj/43
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
------=_Part_16609_1879135.1129701301493
Content-Type: image/jpeg; name="diagram2.JPG"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="diagram2.JPG"

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAMABAADASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwC8msPC
Gt7bQNIlitYbYSXF1Nbw5eSLeOZAMk4buelXXn1mL7J5nhHQ0+2Y+y7ryzHn5xjZ/e+8OnqPWsF7
3T7LSvEEt9ZfbGJ01LeMn5RIbeQZb227xxzyMFThlz/Dj6faeJtG1OfzbrSY7iOKLzrnZ9hkL7gJ
DjGFJdxjar4J4IdByTxE1Nrm6+Xf0PMlXmp25uvlprbsdpo9/Dq+lQ3w0fTYhLu+T7LG2MMR12+1
XtkX/QM03/wDj/8AiapeBbYyeDbBsdfM/wDRjVB4yln059FkgJBW8aaRQCS8aQyM64HXIB/HFd9K
d6cW97I7qUnKEW+yNTZF/wBAzTf/AADj/wDiaNkX/QM03/wDj/8Aia5NtUnuJvFd5bSwywDTVuLV
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
gnopJ6A1g+NvFup+HUtotH8O6hrF3Kyu4ht5GijjB+bLqpG4gEAdup4wG6DS79dTGkXqW9zbiaXd
5N1CYpYzsfIZTyCD+B6gkYNMDy1/9dL/ANdG/wDQjSUr/wCul/66N/6EaSkAUUUUAFFFFABRRRQA
UUUUAFFFFABH/wAhPSP+wrY/+lMde/14BH/yE9I/7Ctj/wClMde/0AFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFAHP+O/+SeeJf8AsFXX/opq8A8Ef8ihY/8AbT/0Y1e/+O/+SeeJf+wVdf8Aopq8A8Ef
8ihY/wDbT/0Y1AHQUUUUAFFFFABRRRQAUUUUAFFFFABW54PLDxTZFFDON+0E4BOxu/asOt7wZ/yN
th9X/wDQGoYHf+Vff887P/wKP/xNEcdwNQsTN9mVRMceXMXJOxuMbR7n8KfTB/yEdP8A+u5/9Aem
wPI3/wBdL/10b/0I0lK/+ul/66N/6EaSkAUUUUAFFFFABRRRQAUUUUAFFFFABH/yE9I/7Ctj/wCl
Mde/14BH/wAhPSP+wrY/+lMde/0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHP+O/8AknniX/sF
XX/opq8A8Ef8ihY/9tP/AEY1e/8Ajv8A5J54l/7BV1/6KavAPBH/ACKFj/20/wDRjUAdBRRRQAUU
UUAFFFFABRRRQAUUUUAFb3gz/kbbD6v/AOgNWDW94M/5G2w+r/8AoDUAehUwf8hHT/8Aruf/AEB6
fTB/yEdP/wCu5/8AQHpvYDyN/wDXS/8AXRv/AEI0lK/+ul/66N/6EaSkAUUUUAFFFFABRRRQAUUU
UAFFFFABH/yE9I/7Ctj/AOlMde/14BH/AMhPSP8AsK2P/pTHXv8AQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAc/wCO/wDknniX/sFXX/opq8A8Ef8AIoWP/bT/ANGNXv8A47/5J54l/wCwVdf+imrw
DwR/yKFj/wBtP/RjUAdBRRRQAUUUUAFFFFABRRRQAUUUUAFb3gz/AJG2w+r/APoDVg1veDP+RtsP
q/8A6A1AHoVMH/IR0/8A67n/ANAen0wf8hHT/wDruf8A0B6b2A8jf/XS/wDXRv8A0I0lK/8Arpf+
ujf+hGkpAFFFFABRRRQAUUUUAFFFFABRRRQAR/8AIT0j/sK2P/pTHXv9eAR/8hPSP+wrY/8ApTHX
v9ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBz/jv/knniX/ALBV1/6KavAPBH/IoWP/AG0/9GNX
v/jv/knniX/sFXX/AKKavAPBH/IoWP8A20/9GNQB0FFFFABRRRQAUUUUAFFFFABRRRQAVveDP+Rt
sPq//oDVg1veDP8AkbbD6v8A+gNQB6FTB/yEdP8A+u5/9Aen0wf8hHT/APruf/QHpvYDyN/9dL/1
0b/0I0lK/wDrpf8Aro3/AKEaSkAUUUUAFFFFABRRRQAUUUUAFFFFABH/AMhPSP8AsK2P/pTHXv8A
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
GbbOAMdAykHp3I46ZJNbvhrwxo/w58NXYiuJWiBe7vLy6fLyHGSzHgDAH+SSaAOS+D1w8fiD4gaS
sZW2tdbkkjbsSzupA+gjX869Wrz/AOEek3Nr4Yu9ZvoGgvNdvZdReJjkorn5B+XP/Aq9AoAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigArn7z/koejf9gq//wDRtpXQVz95/wAlD0b/ALBV
/wD+jbSgDoKKKKACiiigAooooA5/x3/yTzxL/wBgq6/9FNXgHgj/AJFCx/7af+jGr3/x3/yTzxL/
ANgq6/8ARTV4B4I/5FCx/wC2n/oxqAOgooooAKKKKACiiigAooooAKKKKACt7wZ/yNth9X/9AasG
t7wZ/wAjbYfV/wD0BqAPQqYP+Qjp/wD13P8A6A9Ppg/5COn/APXc/wDoD03sB5G/+ul/66N/6EaS
lf8A10v/AF0b/wBCNJSAKKKKACiiigAooooAKKKKACiiigAj/wCQnpH/AGFbH/0pjr3+vAI/+Qnp
H/YVsf8A0pjr3+gAooooAKKKKACiiigDn/Bv/IDuf+wrqX/pbNXQVz/g3/kB3P8A2FdS/wDS2aug
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKiuLeC
8tpba5hjnglUpJFKoZXU8EEHgj2qWigBqIkUaxxqqIoCqqjAAHQAU6iigAooooAKKKKACobq0tr6
1ktbu3iuLeUbZIpkDo49CDwRU1FACABQAAABwAKWiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACufvP+Sh6N/wBgq/8A/RtpXQVz95/yUPRv+wVf/wDo20oA6CiiigAooooAKKKKAOf8
d/8AJPPEv/YKuv8A0U1eAeCP+RQsf+2n/oxq9/8AHf8AyTzxL/2Crr/0U1eAeCP+RQsf+2n/AKMa
gDoKKKKACiiigAooooAKKKKACiiigAre8Gf8jbYfV/8A0Bqwa3vBn/I22H1f/wBAagD0KmD/AJCO
n/8AXc/+gPT6YP8AkI6f/wBdz/6A9N7AeRv/AK6X/ro3/oRpKV/9dL/10b/0I0lIAooooAKKKKAC
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
/wD0Kmh/+C6H/wCJo/4QTwf/ANCpof8A4Lof/iaAD7H4w/6Duh/+Cab/AOSqPsfjD/oO6H/4Jpv/
AJKo/wCEE8H/APQqaH/4Lof/AImj/hBPB/8A0Kmh/wDguh/+JoAPsfjD/oO6H/4Jpv8A5KrPt4dY
i+Iel/2tfWN1nSr7y/slm9vt/e2mc7pXz26Yxg9c8aH/AAgng/8A6FTQ/wDwXQ//ABNXNN8NaDo1
w1xpeiabYzshRpLW1SJiuQcEqAcZAOPYUAalFFFABRRRQAUUUUAc/wCO/wDknniX/sFXX/opq8A8
Ef8AIoWP/bT/ANGNXv8A47/5J54l/wCwVdf+imrwDwR/yKFj/wBtP/RjUAdBRRRQAUUUUAFFFFAB
RRRQAUUUUAFb3gz/AJG2w+r/APoDVg1veDP+RtsPq/8A6A1AHoVMH/IR0/8A67n/ANAen0wf8hHT
/wDruf8A0B6b2A8jf/XS/wDXRv8A0I0lK/8Arpf+ujf+hGkpAFFFFABRRRQAUUUUAFFFFABRRRQA
R/8AIT0j/sK2P/pTHXv9eAR/8hPSP+wrY/8ApTHXv9ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
Bz/jv/knniX/ALBV1/6KavAPBH/IoWP/AG0/9GNXv/jv/knniX/sFXX/AKKavAPBH/IoWP8A20/9
GNQB0FFFFABRRRQAUUUUAFFFFABRRRQAVveDP+RtsPq//oDVg1veDP8AkbbD6v8A+gNQB6FTB/yE
dP8A+u5/9Aen0wf8hHT/APruf/QHpvYDyN/9dL/10b/0I0lK/wDrpf8Aro3/AKEaSkAUUUUAFFFF
ABRRRQAUUUUAFFFFABH/AMhPSP8AsK2P/pTHXv8AXgEf/IT0j/sK2P8A6Ux17/QAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAc/47/5J54l/7BV1/wCimrwDwR/yKFj/ANtP/RjV7/47/wCSeeJf+wVd
f+imrwDwR/yKFj/20/8ARjUAdBRRRQAUUUUAFFFFABRRRQAUUUUAFb3gz/kbbD6v/wCgNWDW94M/
5G2w+r/+gNQB6FTB/wAhHT/+u5/9Aen0wf8AIR0//ruf/QHpvYDyN/8AXS/9dG/9CNJSv/rpf+uj
f+hGkpAFFFFABRRRQAUUUUAFFFFABRRRQAR/8hPSP+wrY/8ApTHXv9eAR/8AIT0j/sK2P/pTHXv9
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBz/jv/AJJ54l/7BV1/6KavAPBH/IoWP/bT/wBGNXv/
AI7/AOSeeJf+wVdf+imrwDwR/wAihY/9tP8A0Y1AHQUUUUAFFFFABRRRQAUUUUAFFFFABW94M/5G
2w+r/wDoDVg1veDP+RtsPq//AKA1AHoVMH/IR0//AK7n/wBAen0wf8hHT/8Aruf/AEB6b2A8jf8A
10v/AF0b/wBCNJSv/rpf+ujf+hGkpAFFFFABRRRQAUUUUAFFFFABRRRQAR/8hPSP+wrY/wDpTHXv
9eAR/wDIT0j/ALCtj/6Ux17/AEAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
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
------=_Part_16609_1879135.1129701301493
Content-Type: image/jpeg; name="diagram3.JPG"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="diagram3.JPG"

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAMABAADASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwC8msPC
Gt7bQNIlitYbYSXF1Nbw5eSLeOZAMk4buelXXn1mL7J5nhHQ0+2Y+y7ryzHn5xjZ/e+8OnqPWsF7
3T7LSvEEt9ZfbGJ01LeMn5RIbeQZb227xxzyMFThlz/Dj6faeJtG1OfzbrSY7iOKLzrnZ9hkL7gJ
DjGFJdxjar4J4IdByTxE1Nrm6+Xf0PMlXmp25uvlprbsdpo9/Dq+lQ3w0fTYhLu+T7LG2MMR12+1
XtkX/QM03/wDj/8AiapeBbYyeDbBsdfM/wDRjVB4yln059FkgJBW8aaRQCS8aQyM64HXIB/HFd9K
d6cW97I7qUnKEW+yNTZF/wBAzTf/AADj/wDiaNkX/QM03/wDj/8Aia5NtUnuJvFd5bSwywDTVuLV
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