All of lore.kernel.org
 help / color / mirror / Atom feed
* git pull on ia64 linux tree
@ 2005-04-22 22:03 tony.luck
  2005-04-22 22:34 ` Linus Torvalds
                   ` (137 more replies)
  0 siblings, 138 replies; 151+ messages in thread
From: tony.luck @ 2005-04-22 22:03 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	rsync://rsync.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git

This will update the files shown below.


Thanks!

-Tony

Notes ... this time I used Petr's "cogito" tools, instead of raw git
commands.  I'm hugely impressed that generating the diffstat and commit
list takes less than half a second :-)

"git log" seems to have problems interpreting the dates ... looking at the
commit entries, the time is right ... but it appears that git log applies
the timezone correction twice, so the changes I just applied at 14:46 PDT
look like I made them at quarter to five tomorrow morning (+14 hours from
when I did).

 ia64/ia32/ia32_signal.c |    5 
 ia64/kernel/head.S      |  284 ++++++++++++++++++++++++++++++++++++++++++------
 ia64/kernel/mca_asm.S   |   88 ++++++++------
 ia64/kernel/process.c   |   22 +--
 ia64/kernel/smpboot.c   |   81 ++++++++-----
 asm-ia64/sal.h          |   38 ++++++
 6 files changed, 405 insertions(+), 113 deletions(-)

commit df6c6804ce1d383c878ab071bce8125125d96abc
tree 43765d4b40a4a3c64f2a32b684f4041e2f01644d
parent b8d8b883e6f029e99c35c88f853501740e322131
author Ashok Raj <ashok.raj@intel.com> Sat, 23 Apr 2005 04:46:24 -0700
committer Tony Luck <tony.luck@intel.com> Sat, 23 Apr 2005 04:46:24 -0700

    [IA64] Fix build errors for !HOTPLUG case.
    
    Signed-off-by: Ashok Raj <ashok.raj@intel.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit b8d8b883e6f029e99c35c88f853501740e322131
tree 391f2ade8823149f217991eb02911bf3dacce050
parent 7130667107cd3ab9d6802b69bab63c7d22f20bd4
author Ashok Raj <ashok.raj@intel.com> Sat, 23 Apr 2005 04:44:40 -0700
committer Tony Luck <tony.luck@intel.com> Sat, 23 Apr 2005 04:44:40 -0700

    [IA64] cpu hotplug: return offlined cpus to SAL
    
    This patch is required to support cpu removal for IPF systems. Existing code
    just fakes the real offline by keeping it run the idle thread, and polling
    for the bit to re-appear in the cpu_state to get out of the idle loop.
    
    For the cpu-offline to work correctly, we need to pass control of this CPU 
    back to SAL so it can continue in the boot-rendez mode. This gives the
    SAL control to not pick this cpu as the monarch processor for global MCA
    events, and addition does not wait for this cpu to checkin with SAL
    for global MCA events as well. The handoff is implemented as documented in 
    SAL specification section 3.2.5.1 "OS_BOOT_RENDEZ to SAL return State"
    
    Signed-off-by: Ashok Raj <ashok.raj@intel.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit 7130667107cd3ab9d6802b69bab63c7d22f20bd4
tree b4467b2d08a139961e709cfb41bd1f9280249155
parent efab7739d99eae948971140b2aa3dddf7f72c900
author Arun Sharma <arun.sharma@intel.com> Sat, 23 Apr 2005 03:06:47 -0700
committer Tony Luck <tony.luck@intel.com> Sat, 23 Apr 2005 03:06:47 -0700

    [IA64] ia32_signal.c: erroneous use of memset/memcpy
    
    Found by Alexander Nyberg, improved by Bjorn Helgaas.
    
    - Fix the incorrect argument to sizeof()
    - looks like memcpy() code pass was dervived from code that used
      copy_from_user().  But in this case we are doing to kernel space
      to kernel space copy, so memcpy is the right routine, but it
      doesn't return an error code.
     
    Signed-off-by: Arun Sharma <arun.sharma@intel.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>


^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
@ 2005-04-22 22:34 ` Linus Torvalds
  2005-04-24  5:02   ` Sanjoy Mahajan
  2005-04-25 21:31 ` tony.luck
                   ` (136 subsequent siblings)
  137 siblings, 1 reply; 151+ messages in thread
From: Linus Torvalds @ 2005-04-22 22:34 UTC (permalink / raw)
  To: tony.luck, Git Mailing List



On Fri, 22 Apr 2005 tony.luck@intel.com wrote:
> 
> "git log" seems to have problems interpreting the dates ... looking at the
> commit entries, the time is right ... but it appears that git log applies
> the timezone correction twice, so the changes I just applied at 14:46 PDT
> look like I made them at quarter to five tomorrow morning (+14 hours from
> when I did).

Looks like you are right.

The seconds are already in UTC format, so I think "git log" is wrong to 
pass the UTC seconds in to "date", and then tell date that it was done in 
the original timezone.

I think it would be nice to use the TZ data to show the thing in the 
timezone of the committer, though. Dunno how to do that, maybe something 
like

	TZ=$tz date -d "1970-01-01 + $sec sec"

or whatever. Sadly, it looks like "date" doesn't understand timezone 
syntax like that - looks like TZ has to be in the long machine-unreadable 
format like "US/Pacific" etc. Stupid (either TZ or me - maybe I just 
don't know what the right format is).

		Linus

^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:34 ` Linus Torvalds
@ 2005-04-24  5:02   ` Sanjoy Mahajan
  0 siblings, 0 replies; 151+ messages in thread
From: Sanjoy Mahajan @ 2005-04-24  5:02 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: tony.luck, Git Mailing List

> I think it would be nice to use the TZ data to show the thing in the
> timezone of the committer, though. Dunno how to do that, maybe
> something like
>	TZ=$tz date -d "1970-01-01 + $sec sec"
> Sadly, it looks like "date" doesn't understand timezone syntax like
> that

Try:

negzone=`echo $tz | tr '[-]+' '+-'`
date -u -R -d "1970-01-01 $negzone + $sec sec" | sed "s/+0000/$tz/"

Or as a script:

#!/bin/bash
# usage: show-date.sh <utcseconds> <zone>
negzone=`echo $2 | tr '[-]+' '+-'`
date -u -R -d "1970-01-01 $negzone + $1 sec" | sed "s/+0000/$2/"

A simple test:

$ show-date.sh 10 +0200
Thu, 01 Jan 1970 02:00:10 +0200

Negating the timezone is an ugly workaround for date not understanding
a sensible TZ format.  I almost always use -u with date, otherwise I
get confused about what timezone it is using to interpret and to print
the date.

-Sanjoy

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
  2005-04-22 22:34 ` Linus Torvalds
@ 2005-04-25 21:31 ` tony.luck
  2005-04-25 21:50 ` Luck, Tony
                   ` (135 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: tony.luck @ 2005-04-25 21:31 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

Here's all the patches that are ready to be migrated from my "test" BK tree.
[everything from that tree execpt a series of patches to speed up the system
call path from David Mosberger, these can wait for 2.6.12]

please pull from:

	rsync://rsync.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git

This will update the files shown below.

Thanks!

-Tony

 ia64/Kconfig                               |    2 
 ia64/configs/sn2_defconfig                 |    2 
 ia64/hp/common/sba_iommu.c                 |   96 +--
 ia64/kernel/entry.S                        |   14 
 ia64/kernel/iosapic.c                      |  360 +++++++++---
 ia64/kernel/irq_ia64.c                     |   16 
 ia64/kernel/perfmon.c                      |   59 --
 ia64/kernel/perfmon_default_smpl.c         |   13 
 ia64/kernel/setup.c                        |   69 ++
 ia64/kernel/smpboot.c                      |  217 +++++++
 ia64/kernel/unwind.c                       |   27 
 ia64/lib/memcpy_mck.S                      |    2 
 ia64/mm/contig.c                           |    3 
 ia64/mm/discontig.c                        |    3 
 ia64/mm/fault.c                            |    9 
 ia64/mm/init.c                             |   74 +-
 ia64/sn/include/pci/pcibr_provider.h       |    6 
 ia64/sn/include/pci/pcibus_provider_defs.h |   43 -
 ia64/sn/include/pci/pcidev.h               |   54 -
 ia64/sn/kernel/Makefile                    |    1 
 ia64/sn/kernel/bte.c                       |   20 
 ia64/sn/kernel/bte_error.c                 |   76 +-
 ia64/sn/kernel/huberror.c                  |    9 
 ia64/sn/kernel/io_init.c                   |   78 ++
 ia64/sn/kernel/irq.c                       |   19 
 ia64/sn/kernel/setup.c                     |    9 
 ia64/sn/kernel/sn2/sn_hwperf.c             |  112 +++
 ia64/sn/kernel/tiocx.c                     |  548 ++++++++++++++++++
 ia64/sn/pci/Makefile                       |    2 
 ia64/sn/pci/pci_dma.c                      |   39 -
 ia64/sn/pci/pcibr/pcibr_ate.c              |    4 
 ia64/sn/pci/pcibr/pcibr_dma.c              |  105 +--
 ia64/sn/pci/pcibr/pcibr_provider.c         |   24 
 ia64/sn/pci/pcibr/pcibr_reg.c              |    4 
 ia64/sn/pci/tioca_provider.c               |  668 ++++++++++++++++++++++
 char/Kconfig                               |   14 
 char/Makefile                              |    3 
 char/mbcs.c                                |  849 +++++++++++++++++++++++++++++
 char/mbcs.h                                |  553 ++++++++++++++++++
 char/snsc.c                                |    8 
 char/snsc.h                                |   40 +
 char/snsc_event.c                          |  304 ++++++++++
 asm-ia64/hw_irq.h                          |    1 
 asm-ia64/pal.h                             |   68 ++
 asm-ia64/perfmon.h                         |   12 
 asm-ia64/pgalloc.h                         |  144 ++--
 asm-ia64/processor.h                       |   10 
 asm-ia64/sal.h                             |   12 
 asm-ia64/smp.h                             |    5 
 asm-ia64/sn/addrs.h                        |    6 
 asm-ia64/sn/bte.h                          |   53 +
 asm-ia64/sn/geo.h                          |   45 -
 asm-ia64/sn/nodepda.h                      |    4 
 asm-ia64/sn/pcibus_provider_defs.h         |   52 +
 asm-ia64/sn/pcidev.h                       |   58 +
 asm-ia64/sn/pda.h                          |    3 
 asm-ia64/sn/shub_mmr.h                     |   37 +
 asm-ia64/sn/sn_sal.h                       |   46 +
 asm-ia64/sn/tioca.h                        |  596 ++++++++++++++++++++
 asm-ia64/sn/tioca_provider.h               |  206 +++++++
 asm-ia64/sn/tiocx.h                        |   71 ++
 asm-ia64/sn/types.h                        |    3 
 62 files changed, 5390 insertions(+), 600 deletions(-)

commit 605036cf8443b9172b24954dc1fd218e2049f91b
tree 6c74011e73452ff0a4d3212fef5373b241a843b0
parent fc626b278a05a0fe3eb9abd1733120f2f400cbcd
author Jesse Barnes <jbarnes@sgi.com> Mon, 25 Apr 2005 13:31:04 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:31:04 -0700

    From: jbarnes@sgi.com
    
    [IA64] fix ia64 Kconfig to allow CONFIG_PM on sn2
    
    This probably should have been fixed when I fixed up the generic build for
    discontig+numa machines, but oh well.
    
    CONFIG_PM is allowable for generic builds but not for sn2 builds, which
    doesn't make much sense, and in fact breaks the build if recent ACPI bits are
    added to the tree.  It looks like the only arch that needs to prevent
    CONFIG_PM stuff is the ski simulator (though those options could probably use
    some cleanup as well), so remove the big conditional and replace it with a
    simple test for IA64_HP_SIM instead.
    
    Signed-off-by: Jesse Barnes <jbarnes@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit fc626b278a05a0fe3eb9abd1733120f2f400cbcd
tree f9eb4dabb5ee45700b4f422dcf6bbaa27c7cc58e
parent 67639deb099c6085acc447c1b7d6a17792dedad0
author Greg Howard <ghoward@sgi.com> Mon, 25 Apr 2005 13:29:46 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:29:46 -0700

    [IA64-SGI] snsc_event.c new file
    
    Forgot the "bk new" to add this file. Part of the patch
    from Greg Howard
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit 67639deb099c6085acc447c1b7d6a17792dedad0
tree b9cdf0d92ff2c02e7ed182a93d7ea270ba752b10
parent b9e41d7fb62ae26adee84c18048037214ce5d866
author Greg Howard <ghoward@sgi.com> Mon, 25 Apr 2005 13:28:52 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:28:52 -0700

    [IA64] Altix system controller event handling
    
    The following is an update of the patch I sent yesterday
    (3/9/05) incorporating suggestions from Christoph Hellwig and
    Andreas Schwab.  It allows Altix and Altix-like systems to
    handle environmental events generated by the system controllers,
    and should apply on top of Jack Steiner's patch of 3/1/05 ("New
    chipset support for SN platform") and Mark Goodwin's patch of
    3/8/05 ("Altix SN topology support for new chipsets and pci
    topology").
    
    Signed-off-by: Greg Howard <ghoward@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit b9e41d7fb62ae26adee84c18048037214ce5d866
tree d39f224bce0113f860417f81acceb5d2cb8428b3
parent e1ed81ab7a34fc0f92f2e200825bdb6d86d6c8ef
author Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com> Mon, 25 Apr 2005 13:27:48 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:27:48 -0700

    [IA64] iosapic.c: typo ... s/spin_unlock_irq/spin_unlock/
    
    vector sharing patch had a typo ... mismatched spin_lock() with
    a spin_unlock_irq().  Fix from Kenji Kaneshige.
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit e1ed81ab7a34fc0f92f2e200825bdb6d86d6c8ef
tree 488b22465b9108142b2df16d6e267b0ddda2b839
parent 24eeb568aeeaee771b9f0a6fd6f5d01040a887da
author Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:27:12 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:27:12 -0700

    [IA64] print "siblings" before {physical,core,thread} id
    
    Rohit and Suresh changed their mind about the order to print things
    in /proc/cpuinfo, but didn't include the change in the version of
    the patch they sent to me.
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit 24eeb568aeeaee771b9f0a6fd6f5d01040a887da
tree 4d3e731845cde292b5a40ff7db97cce639dc073c
parent e927ecb05e1ce4bbb1e10f57008c94994e2160f5
author Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com> Mon, 25 Apr 2005 13:26:23 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:26:23 -0700

    [IA64] vector sharing (Large I/O system support)
    
    Current ia64 linux cannot handle greater than 184 interrupt sources
    because of the lack of vectors. The following patch enables ia64 linux
    to handle greater than 184 interrupt sources by allowing the same
    vector number to be shared by multiple IOSAPIC's RTEs. The design of
    this patch is besed on "Intel(R) Itanium(R) Processor Family Interrupt
    Architecture Guide".
    
    Even if you don't have a large I/O system, you can see the behavior of
    vector sharing by changing IOSAPIC_LAST_DEVICE_VECTOR to fewer value.
    
    Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit e927ecb05e1ce4bbb1e10f57008c94994e2160f5
tree bc8256cc074f02d557088696035982fa7ae0b301
parent 6118ec847e8e35393efc0f88394c2f5dd48c3313
author Suresh Siddha <suresh.b.siddha@intel.com> Mon, 25 Apr 2005 13:25:06 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:25:06 -0700

    [IA64] multi-core/multi-thread identification
    
    Version 3 - rediffed to apply on top of Ashok's hotplug cpu
    patch.  /proc/cpuinfo output in step with x86.
    
    This is an updated MC/MT identification patch based on the 
    previous discussions on list. 
    
    Add the Multi-core and Multi-threading detection for IPF.
      - Add new core and threading related fields in /proc/cpuinfo.
    		Physical id
    		Core id
    		Thread id
    		Siblings
      - setup the cpu_core_map and cpu_sibling_map appropriately
      - Handles Hot plug CPU
     
    Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
    Signed-off-by: Gordon Jin <gordon.jin@intel.com>
    Signed-off-by: Rohit Seth <rohit.seth@intel.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit 6118ec847e8e35393efc0f88394c2f5dd48c3313
tree 81b1eb429f1d7154ec7a36c3b6c0418ba2029f02
parent f0a8d3c9ec1f82d2a41faa6c46b8db7bd5b1eb8d
author Keith Owens <kaos@sgi.com> Mon, 25 Apr 2005 13:23:47 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:23:47 -0700

    [IA64] __copy_user breaks on unaligned src
    
    memcpy_mck.S::__copy_user breaks in the prefetch code under these conditions :-
    
    * src is unaligned and
    * dst is near the end of a page and
    * the page after dst is unmapped.
    
    Signed-off-by: Keith Owens <kaos@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit f0a8d3c9ec1f82d2a41faa6c46b8db7bd5b1eb8d
tree 2b01c7a6d8513e9b08749d3c9cdafdc2cbf19d6b
parent 0985ea8f2db87d32b0b750229889e55fed7458ef
author Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:22:44 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:22:44 -0700

    [IA64] Need to handle lfetch in "no_context" case.
    
    Thanks to Mark for tracking down this one.  Users of __copy_from_user_inatomic()
    will be sad if we don't handle lfetch faults for the "no_context" case.
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit 0985ea8f2db87d32b0b750229889e55fed7458ef
tree 76e292f65c01b5f298a7a8d5a03287229c4be3a3
parent a37d98f6a98254c05315e0bbf45c4602942d14b1
author Mark Goodwin <markgw@sgi.com> Mon, 25 Apr 2005 13:21:54 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:21:54 -0700

    [IA64-SGI] Altix SN add support for slots in geoid_t locator
    
    This patch against ia64-test-2.6.12 is needed for forthcoming
    Altix chipsets. It renames geoid_any_t to geoid_common_t and
    splits the 8bit 'slab' field into two 4bit fields for 'slab'
    and 'slot'. Similar changes in the Altix SAL will retain backward
    compatibility for old kernels.
    
    Signed-off-by: Mark Goodwin <markgw@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit a37d98f6a98254c05315e0bbf45c4602942d14b1
tree 8d6a3b98118866319a76d719efa9d7fbe5914854
parent 93a07d0a0e7b013ee73fb39d4edb07b47288912e
author David Mosberger-Tang <davidm@hpl.hp.com> Mon, 25 Apr 2005 13:20:38 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:20:38 -0700

    [IA64] fix syscall-optimization goof
    
    Sadly, I goofed in this syscall-tuning patch:
    
    ChangeSet 1.1966.1.40 2005/01/22 13:31:05 davidm@hpl.hp.com
      [IA64] Improve ia64_leave_syscall() for McKinley-type cores.
    
      Optimize ia64_leave_syscall() a bit better for McKinley-type cores.
      The patch looks big, but that's mostly due to renaming r16/r17 to r2/r3.
      Good for a 13 cycle improvement.
    
    The problem is that the size of the physical stacked registers was
    loaded into the wrong register (r3 instead of r17).  Since r17 by
    coincidence always had the value 1, this had the effect of turning
    rse_clear_invalid into a no-op.  That poses the risk of leaking kernel
    state back to user-land and is hence not acceptable.
    
    The fix below is simple, but unfortunately it costs us about 28 cycles
    in syscall overhead. ;-(
    
    Unfortunately, there isn't much we can do about that since those
    registers have to be cleared one way or another.
    
    	--david
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit 93a07d0a0e7b013ee73fb39d4edb07b47288912e
tree e68ba0b39bcc8a9e844889af1229c024be29e95c
parent 95ff439a517835aa2bdf725fafbb025a63984289
author Russ Anderson <rja@sgi.com> Mon, 25 Apr 2005 13:19:52 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:19:52 -0700

    [IA64-SGI] Shub2 BTE support - BTE recovery code
    
    patch 2:
    	Shub2 BTE recovery code will be implemented in SAL.  
    	Define the SAL interface.
    	Modify bte_error to call SAL for shub2.
    
    Signed-off-by: Russ Anderson <rja@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit 95ff439a517835aa2bdf725fafbb025a63984289
tree 4d04b1bfcbe4a4c0b27e7b58e3edb77b4111a3a2
parent 4628d7cada7a19166ba8fe57f5ef0f0009694e1e
author Russ Anderson <rja@sgi.com> Mon, 25 Apr 2005 13:19:11 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:19:11 -0700

    [IA64-SGI] Add new MMR definitions/Modify BTE initialiation&copy.
    
    patch 1:
    	Add new MMR definitions.
    	Modify BTE initialiation.
    	Modify BTE copy.
    
    Signed-off-by: Russ Anderson <rja@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit 4628d7cada7a19166ba8fe57f5ef0f0009694e1e
tree 86fa31598303768755a4caeee662b4c999c3a929
parent e96c9b4779e651a7469bea677be3a08f70be399e
author Mark Maule <maule@sgi.com> Mon, 25 Apr 2005 13:18:02 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:18:02 -0700

    [IA64-SGI] disable TIOCA GART TLB prefetching
    
    Patch to disable SGI TIOCA GART TLB prefetching due to hw bug.
    
    Signed-off-by: Mark Maule <maule@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit e96c9b4779e651a7469bea677be3a08f70be399e
tree 12ae1cb3dde60b65dc2682371624260de6cea79a
parent c411cb56586915350e4cdb6f228e9da2adba3285
author Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:16:59 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:16:59 -0700

    [IA64] MAX_PGT_FREES_PER_PASS must be 'L' to avoid warning
    
    'min' is very picky about types of arguments, make it happy
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit c411cb56586915350e4cdb6f228e9da2adba3285
tree 61cf8e8eb97592d2e3d8e7524dfabde731d97d12
parent 5f6602a101993592b437b801c401443bec65d0cf
author Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:16:16 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:16:16 -0700

    [IA64] fix: warning: `ql_size' might be used uninitialized
    
    Oops.  Should have caught this before I checked it in.
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit 5f6602a101993592b437b801c401443bec65d0cf
tree 603ce367a349b9454a7f6b77953b3ecdf194ec68
parent fde740e4dd4a05ca8957490d468fa9b2770f5bd6
author Alex Williamson <alex.williamson@hp.com> Mon, 25 Apr 2005 13:14:36 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:14:36 -0700

    [IA64] sba_iommu bug fixes
    
       This fixes a couple of bugs in the zx1/sx1000 sba_iommu.  These are
    all pretty low likelihood of hitting.  The first problem is a simple off
    by one, deep in the sba_alloc_range() error path.  Surrounding that was
    a lock ordering problem that could have potentially deadlocked with the
    order the locks are grabbed in sba_unmap_single().  I moved the resource
    locking into sba_search_bitmap() to prevent this.  Finally, there's a
    potential race between unmapping pdir entries and marking incoming DMA
    pages clean.  If you see any oddities, please let me know, but I've
    tested it pretty thoroughly here.  Tony, please apply.  Thanks,
    
    BTW, many of the options in this driver not on by default are becoming
    more and more broken.  I'll be working on some patches to clean them
    out, but I wanted to get this bug fix out first.
    
    Signed-off-by: Alex Williamson <alex.williamson@hp.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit fde740e4dd4a05ca8957490d468fa9b2770f5bd6
tree 04bc0221bc6c59379a17f3631fc4bd3c886e1d61
parent ff3eb55ed97db3f12964beeffe3d34602d295367
author Robin Holt <holt@sgi.com> Mon, 25 Apr 2005 13:13:16 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:13:16 -0700

    [IA64] Percpu quicklist for combined allocator for pgd/pmd/pte.
    
    This patch introduces using the quicklists for pgd, pmd, and pte levels
    by combining the alloc and free functions into a common set of routines.
    This greatly simplifies the reading of this header file.
    
    This patch is simple but necessary for large numa configurations.
    It simply ensures that only pages from the local node are added to a
    cpus quicklist.  This prevents the trapping of pages on a remote nodes
    quicklist by starting a process, touching a large number of pages to
    fill pmd and pte entries, migrating to another node, and then unmapping
    or exiting.  With those conditions, the pages get trapped and if the
    machine has more than 100 nodes of the same size, the calculation of
    the pgtable high water mark will be larger than any single node so page
    table cache flushing will never occur.
    
    I ran lmbench lat_proc fork and lat_proc exec on a zx1 with and without
    this patch and did not notice any change.
    
    On an sn2 machine, there was a slight improvement which is possibly
    due to pages from other nodes trapped on the test node before starting
    the run.  I did not investigate further.
    
    This patch shrinks the quicklist based upon free memory on the node
    instead of the high/low water marks.  I have written it to enable
    preemption periodically and recalculate the amount to shrink every time
    we have freed enough pages that the quicklist size should have grown.
    I rescan the nodes zones each pass because other processess may be
    draining node memory at the same time as we are adding.
    
    Signed-off-by: Robin Holt <holt@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit ff3eb55ed97db3f12964beeffe3d34602d295367
tree 91a29b33ec016e8fb5280e6896f2faf26bd69e54
parent c1298c5c7e5763a3b2fd4a9535d474ff6e54cd53
author Bruce Losure <blosure@sgi.com> Mon, 25 Apr 2005 13:12:02 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:12:02 -0700

    [IA64-SGI]
    
    Missed the "bk new" for this file in the last commit.
    
    Signed-off-by: Bruce Losure <blosure@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit c1298c5c7e5763a3b2fd4a9535d474ff6e54cd53
tree 9235aeedfff44ddb7330ce119ad285bf92e65253
parent e1e19747ecce9117610b8f3b57a3e95734230319
author Aaron J Young <ayoung@sgi.com> Mon, 25 Apr 2005 13:11:14 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:11:14 -0700

    [IA64-SGI] Altix: enable poweroff
    
    This patch adds the necessary "hook" to allow SGI/SN
    machines to perform a system power off upon a 
    'init 0', 'halt -p', 'poweroff' or 'shutdown -h'.
    
    The "hook" is to set the pm_power_off callback
    to ia64_sn_power_down(). pm_power_off is checked
    in machine_power_off()/do_poweroff() and, if set, is executed. 
    ia64_sn_power_down() is a function already present (but not 
    used currently) in the sn kernel.
    ia64_sn_power_down() makes a SAL call to execute the
    power off.
    
    Signed-off-by: Aaron J Young <ayoung@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit e1e19747ecce9117610b8f3b57a3e95734230319
tree df3d9ed57ad8155de89d1d80bbfec1833d2621fb
parent 4944930ab748942e41ea4dc313fcb0946aee3f17
author Bruce Losure <blosure@sgi.com> Mon, 25 Apr 2005 13:09:41 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:09:41 -0700

    [IA64-SGI] Bus driver for the CX port of SGI's TIO chip.
    
    This patch is to provide CX port infrastructure for SGI TIO-based
    h/w.   Also a 'core services' driver for SGI FPGA-based h/w.
                                                                                    
    Signed-off-by: Bruce Losure <blosure@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit 4944930ab748942e41ea4dc313fcb0946aee3f17
tree 5d23e420c0d7f4387237028ca2dca1ec97f59861
parent 658b32cad9ae087bd34f35a925fd75b76d663d4e
author Stephane Eranian <eranian@hpl.hp.com> Mon, 25 Apr 2005 13:08:30 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:08:30 -0700

    [IA64] perfmon: make pfm_sysctl a global, and other cleanup
    
    - make pfm_sysctl a global such that it is possible
      to enable/disable debug printk in sampling formats
      using PFM_DEBUG.
    
    - remove unused pfm_debug_var variable
    
    - fix a bug in pfm_handle_work where an BUG_ON() could
      be triggered. There is a path where pfm_handle_work()
      can be called with interrupts enabled, i.e., when
      TIF_NEED_RESCHED is set. The fix correct the masking
      and unmasking of interrupts in pfm_handle_work() such
      that we restore the interrupt mask as it was upon entry.
    
    signed-off-by: stephane eranian <eranian@hpl.hp.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit 658b32cad9ae087bd34f35a925fd75b76d663d4e
tree b742c5e1e756912fe6f6a81ebb4a9db814c641e7
parent be539c73b54dcc9f54fb2c2b70e204c93b616c9b
author Colin Ngam <cngam@sgi.com> Mon, 25 Apr 2005 13:07:00 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:07:00 -0700

    [IA64-SGI] support variable length nasids in shub2
    
    This patch enables our TIO IO chipset to support variable length nasids in 
    Shub2 chipset.
    
    Signed-off-by: Colin Ngam <cngam@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit be539c73b54dcc9f54fb2c2b70e204c93b616c9b
tree 2416682e77842ccde4301edb9b7a2182b847ce10
parent f1e2a1c8a1fe16db5f4a7c0c1551d6e1b97dcbb2
author Colin Ngam <cngam@sgi.com> Mon, 25 Apr 2005 13:06:28 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:06:28 -0700

    [IA64-SGI] Shub2 provides an addition of 2 External Interrupt events.
    
    Signed-off-by: Colin Ngam <cngam@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit f1e2a1c8a1fe16db5f4a7c0c1551d6e1b97dcbb2
tree b85b5659b94cdb1f656f11f4761fe0836c011076
parent 4a5c13c7eb0d55bfd2cf3100c55f1e3d8df37576
author Mark Goodwin <markgw@sgi.com> Mon, 25 Apr 2005 13:05:08 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:05:08 -0700

    [IA64-SGI] Altix SN topology fix potential infinite loop
    
    Fix infinite loop if sn_hwperf_location_to_bpos() fails.
    
    Signed-off-by: Mark Goodwin <markgw@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit 4a5c13c7eb0d55bfd2cf3100c55f1e3d8df37576
tree 400e51f79f9ba6d34c66401e1760a51e792d14aa
parent 30325d17715302a60c9afdaacaafaeb056b7e880
author Mark Goodwin <markgw@sgi.com> Mon, 25 Apr 2005 13:04:22 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:04:22 -0700

    [IA64-SGI] Altix SN topology support for new chipsets and pci topology
    
    please accept this patch to the Altix SN platform topology export
    interface to support new chipsets and to export PCI topology.
    
    This follows on top of Jack Steiner's patch dated March 1st
    ("New chipset support for SN platform").
    
    Signed-off-by: Mark Goodwin <markgw@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit 30325d17715302a60c9afdaacaafaeb056b7e880
tree 8872d59f841a5338e04f15c1183b8fd2ad4bfbb3
parent e8d1cb2f280aa53e1c75c8b5fcbf80b3481d0caa
author David Mosberger-Tang <davidm@hpl.hp.com> Mon, 25 Apr 2005 13:03:16 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 13:03:16 -0700

    [IA64] speed up syscall path a bit more
    
    Recently I noticed that clearing ar.ssd/ar.csd right before srlz.d is
    causing significant stalling in the syscall path.  The patch below
    fixes that by moving the register-writes after srlz.d.  On a Madison,
    this drops break-based getpid() from 241 to 226 cycles (-15 cycles).
    
    Signed-off-by: David Mosberger-Tang <davidm@hpl.hp.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit e8d1cb2f280aa53e1c75c8b5fcbf80b3481d0caa
tree 832d5f4beabfc1c075dd54eebe343ad10c611c73
parent 8297511530b0d2a281c796e738683951a59a020c
author Keith Owens <kaos@sgi.com> Mon, 25 Apr 2005 11:45:26 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 11:45:26 -0700

    [IA64] Tighten up unw_unwind_to_user check
    
    Detect user space by the unwind frame with predicate PRED_USER_STACK
    set, instead of a user space IP.  Tighten up the last ditch check for
    running off the top of the kernel stack.
    
    Based on a suggestion by David Mosberger, reworked to fit the current
    tree.  This survives my stress test which used to break 2.6.9 kernels.
    Unlike 2.6.11, the stress test now unwinds to the correct point, so
    gdb can get the user space registers.
    
    Signed-off-by: Keith Owens <kaos@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit 8297511530b0d2a281c796e738683951a59a020c
tree 3ade89d674db6b0791ca72704478214d0bb56ad1
parent bf1cf98fa941fea5e630e341db4a294d531aaa3e
author David Mosberger-Tang <davidm@hpl.hp.com> Mon, 25 Apr 2005 11:44:02 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 11:44:02 -0700

    [IA64] add missing cpu_relax() in ITC syncing code
    
    Call cpu_relax() in busy-waiting loops of the ITC-syncing code.
    
    Signed-off-by: David Mosberger-Tang <davidm@hpl.hp.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit bf1cf98fa941fea5e630e341db4a294d531aaa3e
tree e6f8872acefbe2360adf9dbeea85b553e02aa557
parent 9c90bdde77f7b7a42f7ebb900275d459ce2bac05
author Jack Steiner <steiner@sgi.com> Mon, 25 Apr 2005 11:42:39 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 11:42:39 -0700

    [IA64-SGI] Change SAL call request code for SN systems
    
    Change the value of the SAL call number for a new SAL request. The
    initial implementation in the PROM did not match what the OS expected. 
    Since the OS can run on PROMs that do not implement the new call, 
    changing the call number avoids the issue. New PROMs will implement
    the new call number. (This avoids problems with the 4.05 PROM).
    
    Signed-off-by: Jack Steiner <steiner@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit 9c90bdde77f7b7a42f7ebb900275d459ce2bac05
tree a196bb35cb506d2495748506fdbc9280111dee03
parent 9b08ebd167a3f3812131a54512f92c3c6738ad03
author Mark Maule <maule@sgi.com> Mon, 25 Apr 2005 11:35:54 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 11:35:54 -0700

    [IA64-SGI] altix: tioca chip driver (agp)
    
    Provide a driver for the altix TIOCA AGP chipset.  An agpgart backend will
    be provided as a separate patch.
    
    Signed-off-by: Mark Maule <maule@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit 9b08ebd167a3f3812131a54512f92c3c6738ad03
tree 759d4a02d44d233eb7de4dba4fe4626d5d6d29ac
parent e955d82543fea76b02aa243b182e782f71bda82c
author Mark Maule <maule@sgi.com> Mon, 25 Apr 2005 11:32:16 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 11:32:16 -0700

    [IA64-SGI] sn2-move-pci-headers.patch
    
    Move a couple of headers out of arch/ia64/sn/include/pci and into
    include/asm-ia64/sn.
    
    Signed-off-by: Mark Maule <maule@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

commit e955d82543fea76b02aa243b182e782f71bda82c
tree 58dc9df5161f47bca69c8dc9c819495f15694352
parent 25ee7e3832951cf5896b194f6cd929a44863f419
author Mark Maule <maule@sgi.com> Mon, 25 Apr 2005 11:26:03 -0700
committer Tony Luck <tony.luck@intel.com> Mon, 25 Apr 2005 11:26:03 -0700

    [IA64-SGI] sn2-pci-dma-abstraction.patch
    
    Provide an abstraction of the altix pci dma runtime layer so that multiple
    pci-based bridges can be supported.
    
    Signed-off-by: Mark Maule <maule@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>


^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
  2005-04-22 22:34 ` Linus Torvalds
  2005-04-25 21:31 ` tony.luck
@ 2005-04-25 21:50 ` Luck, Tony
  2005-07-07 16:01 ` Luck, Tony
                   ` (134 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2005-04-25 21:50 UTC (permalink / raw)
  To: linux-ia64

> ia64/Kconfig                               |    2
  ...
> char/Kconfig                               |   14
  ...
> asm-ia64/hw_irq.h                          |    1

Ok ... imagine one of the words "arch", "drivers" or "include" in
front of each line in the diffstat output.  I have the wrnog args
to "diffstat" in my script that generates the "please pull" message.

-Tony

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (2 preceding siblings ...)
  2005-04-25 21:50 ` Luck, Tony
@ 2005-07-07 16:01 ` Luck, Tony
  2005-08-17 17:57 ` Luck, Tony
                   ` (133 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2005-07-07 16:01 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	
rsync://rsync.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/sn/include/pci/pcibr_provider.h |  151 -------
 arch/ia64/sn/include/pci/pic.h            |  261 ------------
 arch/ia64/sn/include/pci/tiocp.h          |  256 ------------
 arch/ia64/kernel/Makefile                 |    1 
 arch/ia64/kernel/acpi.c                   |    4 
 arch/ia64/kernel/numa.c                   |   57 ++
 arch/ia64/kernel/signal.c                 |    2 
 arch/ia64/kernel/smpboot.c                |   41 --
 arch/ia64/kernel/traps.c                  |    6 
 arch/ia64/mm/discontig.c                  |  432 +++++++++------------
 arch/ia64/mm/init.c                       |    3 
 arch/ia64/sn/include/xtalk/hubdev.h       |    2 
 arch/ia64/sn/kernel/io_init.c             |  185 +++++----
 arch/ia64/sn/kernel/irq.c                 |  251 ++++++------
 arch/ia64/sn/kernel/setup.c               |   13 
 arch/ia64/sn/pci/pci_dma.c                |    3 
 arch/ia64/sn/pci/pcibr/pcibr_ate.c        |    2 
 arch/ia64/sn/pci/pcibr/pcibr_dma.c        |   15 
 arch/ia64/sn/pci/pcibr/pcibr_provider.c   |   48 ++
 arch/ia64/sn/pci/pcibr/pcibr_reg.c        |    8 
 arch/ia64/sn/pci/tioca_provider.c         |    3 
 drivers/pci/hotplug/Kconfig               |    5 
 drivers/pci/hotplug/Makefile              |    1 
 drivers/pci/hotplug/sgi_hotplug.c         |  611
++++++++++++++++++++++++++++++
 drivers/pci/search.c                      |    1 
 include/asm-ia64/sn/arch.h                |    1 
 include/asm-ia64/sn/intr.h                |    6 
 include/asm-ia64/sn/pcibr_provider.h      |  159 +++++++
 include/asm-ia64/sn/pcidev.h              |   16 
 include/asm-ia64/sn/pic.h                 |  261 ++++++++++++
 include/asm-ia64/sn/sn_cpuid.h            |    5 
 include/asm-ia64/sn/sn_sal.h              |   39 -
 include/asm-ia64/sn/tiocp.h               |  256 ++++++++++++
 33 files changed, 1906 insertions(+), 1199 deletions(-)


commit 283c7f6ac6adb57e7dd13cdbc8d60b6ea4de6faf
tree 53ce99a2373134c174f8df4f3729fcb4f11fb44e
parent e07d01e0aeba905aeca6e0ae612943417d396a0f
author Prarit Bhargava <prarit@sgi.com> 1120688953 -0700
committer Tony Luck <tony.luck@intel.com> 1120688953 -0700

[IA64] hotplug/ia64: SN Hotplug Driver - new SN PROM version code

This patch is a rewrite of the code to check the PROM version.  The
current
code has some deficiences in the way PROM comparisons were made.  The
minimum
value of PROM that will boot has also been changed to 4.04.

Signed-off-by: Prarit Bhargava <prarit@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>

commit 2ba3e3e65cf182436757ba13ea8d564e2950fb56
tree 7546a5141398e8ecaa493a58a4ca8af11deaf04d
parent 7fe4c1b16854f0440939c62b8102cbf5c75e7cdc
author Keith Owens <kaos@sgi.com> 1120197180 -0700
committer Tony Luck <tony.luck@intel.com> 1120689075 -0700

[IA64] restore_sigcontext is not preempt safe

restore_sigcontext calls ia64_set_local_fpu_owner() which requires that
preempt be disabled.

Signed-off-by: Keith Owens <kaos@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>

commit 564601a5d12f93fdde04c6bc5b097b95e7752a46
tree 7ecd89b4eea6c626eb0726a5f7cf16e6e0f93b6e
parent af25e94d4dcfb9608846242fabdd4e6014e5c9f0
author bob.picco <bob.picco@hp.com> 1120150320 -0700
committer Tony Luck <tony.luck@intel.com> 1120689930 -0700

[IA64] memory-less-nodes repost

I reworked how nodes with only CPUs are treated.  The patch below seems
simpler to me and has eliminated the complicated routine
reassign_cpu_only_nodes.  There isn't any longer the requirement
to modify ACPI NUMA information which was in large part the
complexity introduced in reassign_cpu_only_nodes. 

This patch will produce a different number of nodes. For example,
reassign_cpu_only_nodes would reduce two CPUonly nodes and one memory
node
configuration to one memory+CPUs node configuration.  This patch
doesn't change the number of nodes which means the user will see three.
Two
nodes without memory and one node with all the memory.

While doing this patch, I noticed that early_nr_phys_cpus_node isn't
serving
any useful purpose.  It is called once in find_pernode_space but the
value
isn't used to computer pernode space.  

Signed-off-by: bob.picco <bob.picco@hp.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>

commit 6f354b014b51716166f13f68b29212d3c44ed2c4
tree 396c09a5d519630a53652a1187bb85fceba82cee
parent 283c7f6ac6adb57e7dd13cdbc8d60b6ea4de6faf
author Prarit Bhargava <prarit@sgi.com> 1120688993 -0700
committer Tony Luck <tony.luck@intel.com> 1120688993 -0700

[IA64] hotplug/ia64: SN Hotplug Driver - SN Hotplug Driver code

This patch is the SGI hotplug driver and additional changes required for
the driver.  These modifications include changes to the SN io_init.c
code
for memory management, the inclusion of new SAL calls to enable and
disable
PCI slots, and a hotplug-style driver.

Signed-off-by: Prarit Bhargava <prarit@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>

commit 7fe4c1b16854f0440939c62b8102cbf5c75e7cdc
tree 4ec5ef085c011a582454f4a6df2705f4ce339ca3
parent 6f354b014b51716166f13f68b29212d3c44ed2c4
author Prarit Bhargava <prarit@sgi.com> 1120689025 -0700
committer Tony Luck <tony.luck@intel.com> 1120689025 -0700

[IA64] hotplug/ia64: SN Hotplug Driver - PREEMPT/pcibus_info fix

This patch fixes an issue with the PROM and a kernel running with
CONFIG_PREEMPT enabled.  When CONFIG_PREEMPT is enabled, the size of a
spinlock_t changes -- resulting in the PROM writing to an incorrect
location.

Signed-off-by: Prarit Bhargava <prarit@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>

commit 8d7e35174d02ce76e910365acaaefc281a0b72a0
tree 4445375bbf8c08f8032c5a013374777931949285
parent 564601a5d12f93fdde04c6bc5b097b95e7752a46
author Tony Luck <tony.luck@intel.com> 1120699090 -0700
committer Tony Luck <tony.luck@intel.com> 1120699090 -0700

[IA64] fix generic/up builds

Jesse Barnes provided the original version of this patch months ago, but
other changes kept conflicting with it, so it got deferred.  Greg
Edwards
dug it out of obscurity just over a week ago, and almost immediately
another conflicting patch appeared (Bob Picco's memory-less nodes).

I've resolved the conflicts and got it running again.  CONFIG_SGI_TIOCX
is set to "y" in defconfig, which causes a Tiger to not boot (oops in
tiocx_init).  But that can be resolved later ... get this in now before
it
gets stale again.

Signed-off-by: Tony Luck <tony.luck@intel.com>

commit af25e94d4dcfb9608846242fabdd4e6014e5c9f0
tree f311db4563cb7f101520c737965e3d2180fcda67
parent 67d340f440f389e9d56201fb7c7aaa92f262feb1
author  <> 1120285620 -0700
committer Tony Luck <tony.luck@intel.com> 1120689895 -0700

[IA64] Make ia64 die() preempt safe

Signed-off-by: Keith Owens <kaos@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>

commit c13cf3714fc84ad2fd65771aa08e47c95a9f26ef
tree f3fdd5f81fc0e39029f7cc6c8e4f41d6a736a4de
parent cb4cb2cb9b0b14bdf2fc7125e099ed7e818cea42
author Prarit Bhargava <prarit@sgi.com> 1120688811 -0700
committer Tony Luck <tony.luck@intel.com> 1120688811 -0700

[IA64] hotplug/ia64: SN Hotplug Driver: moving of header files

This patch moves header files out of the arch/ia64/sn directories and
into
include/asm-ia64/sn.  These files were being included by other
subsystems
and should be under include/asm-ia64/sn.

Signed-off-by: Prarit Bhargava <prarit@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>

commit cb4cb2cb9b0b14bdf2fc7125e099ed7e818cea42
tree 11e110ce3201e0cbd3e30f1d4a1b0dc6ebe19bfa
parent bd53d1270f51c6cfb53b06c8f93fd42327871d6b
author Prarit Bhargava <prarit@sgi.com> 1120687184 -0700
committer Tony Luck <tony.luck@intel.com> 1120687184 -0700

[IA64] hotplug/ia64: SN Hotplug Driver: SN IRQ Fixes

This patch  fixes the SN IRQ code such that cpu affinity and
Hotplug can modify IRQ values.  The sn_irq_info structures are now
locked
using a RCU lock mechanism to avoid lock contention in the lost
interrupt
WAR code.

Signed-off-by: Prarit Bhargava <prarit@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>

commit e07d01e0aeba905aeca6e0ae612943417d396a0f
tree 5d445ad1803389844ccf9a4fcb9ec160ae554fd7
parent c13cf3714fc84ad2fd65771aa08e47c95a9f26ef
author Prarit Bhargava <prarit@sgi.com> 1120688920 -0700
committer Tony Luck <tony.luck@intel.com> 1120688920 -0700

[IA64] hotplug/ia64: SN Hotplug Driver - pci_find_next_bus export

The pci_find_next_bus function is listed as being exported to drivers.
It is
not EXPORT_SYMBOL'd.

Signed-off-by: Prarit Bhargava <prarit@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (3 preceding siblings ...)
  2005-07-07 16:01 ` Luck, Tony
@ 2005-08-17 17:57 ` Luck, Tony
  2005-08-23 15:01 ` Luck, Tony
                   ` (132 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2005-08-17 17:57 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	
rsync://rsync.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git
release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/Kconfig                 |   11 -
 arch/ia64/configs/sn2_defconfig   |  262
+++++++++++++++++++++++---------------
 arch/ia64/configs/tiger_defconfig |  149 +++++++++++----------
 arch/ia64/configs/zx1_defconfig   |  224
++++++++++++++------------------
 arch/ia64/kernel/perfmon.c        |    1 
 arch/ia64/kernel/salinfo.c        |    3 
 arch/ia64/sn/kernel/io_init.c     |    1 
 drivers/serial/sn_console.c       |    1 
 include/asm-ia64/iosapic.h        |    4 
 9 files changed, 354 insertions(+), 302 deletions(-)

Christoph Hellwig:
  [IA64] update CONFIG_PCI description

Greg Edwards:
  [IA64] Refresh arch/ia64/configs/sn2_defconfig.

Keith Owens:
  [IA64] Initialize some spinlocks

Kenji Kaneshige:
  [IA64] fix iosapic_remove build error for !HOTPLUG

Peter Chubb:
  [IA64] Updated zx1 defconfig

stephane.eranian@hp.com:
  [IA64] fix perfmon context load

Tony Luck:
  [IA64] Updated tiger defconfig


^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (4 preceding siblings ...)
  2005-08-17 17:57 ` Luck, Tony
@ 2005-08-23 15:01 ` Luck, Tony
  2005-08-30 23:27 ` Luck, Tony
                   ` (131 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2005-08-23 15:01 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

Last few ia64 fixes for 2.6.13 ... 

please pull from:

	rsync://rsync.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/hp/sim/boot/boot_head.S  |    2 +-
 arch/ia64/hp/sim/boot/bootloader.c |   12 ++++++------
 arch/ia64/sn/kernel/io_init.c      |   18 ++++++++++--------
 include/asm-ia64/io.h              |    8 --------
 4 files changed, 17 insertions(+), 23 deletions(-)

Ian Wienand:
  [IA64] Simulator bootloader fails with gcc 4

Peter Chubb:
  [IA64] Fix simulator boot (for real this time).

Prarit Bhargava:
  [IA64]: SN fix bus->sysdata pointer and memory cleanups

Tony Luck:
  [IA64] remove unused function __ia64_get_io_port_base
  [IA64] backout incorrect fix for simulator boot issue


^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (5 preceding siblings ...)
  2005-08-23 15:01 ` Luck, Tony
@ 2005-08-30 23:27 ` Luck, Tony
  2005-08-31  3:10 ` Keith Owens
                   ` (130 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2005-08-30 23:27 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	rsync://rsync.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/Kconfig                          |    6 
 arch/ia64/hp/sim/boot/fw-emu.c             |   11 
 arch/ia64/ia32/ia32_signal.c               |    1 
 arch/ia64/kernel/Makefile                  |    1 
 arch/ia64/kernel/cpufreq/Kconfig           |   29 +
 arch/ia64/kernel/cpufreq/Makefile          |    1 
 arch/ia64/kernel/cpufreq/acpi-cpufreq.c    |  499 ++++++++++++++++++
 arch/ia64/kernel/sys_ia64.c                |    2 
 arch/ia64/lib/Makefile                     |    2 
 arch/ia64/lib/swiotlb.c                    |    5 
 arch/ia64/mm/hugetlbpage.c                 |    8 
 arch/ia64/pci/pci.c                        |    1 
 arch/ia64/sn/include/tio.h                 |    6 
 arch/ia64/sn/include/xtalk/hubdev.h        |   11 
 arch/ia64/sn/kernel/bte.c                  |   85 +--
 arch/ia64/sn/kernel/huberror.c             |    2 
 arch/ia64/sn/kernel/io_init.c              |   35 +
 arch/ia64/sn/kernel/irq.c                  |   75 +-
 arch/ia64/sn/kernel/setup.c                |    7 
 arch/ia64/sn/kernel/sn2/ptc_deadlock.S     |   13 
 arch/ia64/sn/kernel/sn2/sn2_smp.c          |  256 ++++++++-
 arch/ia64/sn/kernel/sn2/sn_hwperf.c        |  319 +++++++++--
 arch/ia64/sn/kernel/sn2/sn_proc_fs.c       |    4 
 arch/ia64/sn/kernel/sn2/timer_interrupt.c  |   22 
 arch/ia64/sn/pci/Makefile                  |    2 
 arch/ia64/sn/pci/pcibr/pcibr_dma.c         |   60 +-
 arch/ia64/sn/pci/pcibr/pcibr_provider.c    |   42 +
 arch/ia64/sn/pci/tioca_provider.c          |    9 
 arch/ia64/sn/pci/tioce_provider.c          |  773 ++++++++++++++++++++++++++++-
 drivers/char/snsc_event.c                  |   11 
 include/asm-ia64/acpi.h                    |    5 
 include/asm-ia64/fcntl.h                   |    3 
 include/asm-ia64/io.h                      |    4 
 include/asm-ia64/mmu.h                     |    8 
 include/asm-ia64/mmu_context.h             |   59 +-
 include/asm-ia64/page.h                    |   31 -
 include/asm-ia64/pal.h                     |   21 
 include/asm-ia64/pgtable.h                 |   13 
 include/asm-ia64/rwsem.h                   |   35 -
 include/asm-ia64/sn/addrs.h                |  114 ++--
 include/asm-ia64/sn/geo.h                  |    3 
 include/asm-ia64/sn/intr.h                 |    3 
 include/asm-ia64/sn/nodepda.h              |    3 
 include/asm-ia64/sn/pcibus_provider_defs.h |    8 
 include/asm-ia64/sn/pda.h                  |    1 
 include/asm-ia64/sn/sn2/sn_hwperf.h        |   10 
 include/asm-ia64/sn/sn_sal.h               |   60 --
 include/asm-ia64/sn/tioce.h                |  740 +++++++++++++++++++++++++++
 include/asm-ia64/sn/tioce_provider.h       |   66 ++
 include/asm-ia64/spinlock.h                |   33 -
 include/asm-ia64/system.h                  |    5 
 51 files changed, 3099 insertions(+), 424 deletions(-)

Adrian Bunk:
  [IA64] arch/ia64/hp/sim/boot/fw-emu.c: remove egcs workaround

Alex Williamson:
  [IA64, X86_64] fix swiotlb sizing

Bjorn Helgaas:
  [IA64] fix IO_SPACE_SPARSE_ENCODING macro ambiguity

Christoph Lameter:
  [IA64] Spinlock optimizations
  [IA64] Remove rwsem limitation of 32k waiters

Colin Ngam:
  [IA64-SGI] Altix only: Add PCI Domain number support.

David Mosberger-Tang:
  [IA64] Fix race in mm-context wrap-around logic.

Greg Edwards:
  [IA64] clean up sn2 region definitions

Greg Howard:
  [IA64-SGI] fix unaligned memory access in snsc_event.c

Jack Steiner:
  [IA64-SGI] - New SN hardware support - addr_macros
  [IA64-SGI] - New SN hardware support - use_alias_space
  [IA64-SGI] - New SN hardware support - boot_init_shub2
  [IA64-SGI] - New SN hardware support - no_wars
  [IA64-SGI] - New SN hardware support - bte_fixes
  [IA64-SGI] - New SN hardware support - cpu_relax
  [IA64-SGI] - New SN hardware support - ptc_fixes

Kenneth Chen:
  [IA64] Delete erroneous copy_page.o in global lib-y list

Kumar Gala:
  [IA64] remove use of asm/segment.h

Mark Goodwin:
  [IA64] - SGI SN hwperf enhancements - export_pci_topology
  [IA64] - SGI SN hwperf enhancements -
  [IA64] - SGI SN hwperf enhancements -

Mark Maule:
  [IA64-SGI] altix: cosmetic rename of SGI_PCIBR_ERROR
  [IA64-SGI] abstract force_interrupt() mechanism
  [IA64-SGI] add support for TIO huge-window
  [IA64-SGI] sn pci provider for TIOCE (pci
  [IA64] altix: Abstract irq_affinity at the sn pci provider

Peter Chubb:
  [IA64] Rationalise Region Definitions

Russ Anderson:
  [IA64] SGI SN remove redundant partition SAL call
  [IA64-SGI] fix bte_copy() calling smp_processor_id() while preemptible

Tony Luck:
  [IA64-SGI] One new use of "UNCACHED" needed fixing for sn2 region cleanup
  [IA64] Low byte of current->personality is not a bitmask.

Venkatesh Pallipadi:
  [IA64] Add ACPI based P-state support


^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (6 preceding siblings ...)
  2005-08-30 23:27 ` Luck, Tony
@ 2005-08-31  3:10 ` Keith Owens
  2005-08-31  3:56 ` Tony Luck
                   ` (129 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Keith Owens @ 2005-08-31  3:10 UTC (permalink / raw)
  To: linux-ia64

On Tue, 30 Aug 2005 16:27:41 -0700, 
"Luck, Tony" <tony.luck@intel.com> wrote:
>Hi Linus,
>
>please pull from:
>
>	rsync://rsync.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

Tony, can you give some indication on your plans for my MCA/INIT
rewrite?  Will you send it to Linus in the next couple of weeks or will
it have to wait for 2.6.15 to open?


^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (7 preceding siblings ...)
  2005-08-31  3:10 ` Keith Owens
@ 2005-08-31  3:56 ` Tony Luck
  2005-08-31 11:28 ` Robin Holt
                   ` (128 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Tony Luck @ 2005-08-31  3:56 UTC (permalink / raw)
  To: linux-ia64

On 8/30/05, Keith Owens <kaos@sgi.com> wrote:
> Tony, can you give some indication on your plans for my MCA/INIT
> rewrite?  Will you send it to Linus in the next couple of weeks or will
> it have to wait for 2.6.15 to open?

Keith,

It is a big enough piece that I don't expect to get to dig through it and test
before Linus hits us with 2.6.14-rc1 and issues the "slow-down" command.
So, realistically this looks to be 2.6.15 material (unless there are others
on the list that would like to see this in earlier and provide comments and
test run results ... hint hint).

-Tony

^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (8 preceding siblings ...)
  2005-08-31  3:56 ` Tony Luck
@ 2005-08-31 11:28 ` Robin Holt
  2005-09-11 22:43 ` Luck, Tony
                   ` (127 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Robin Holt @ 2005-08-31 11:28 UTC (permalink / raw)
  To: linux-ia64

On Tue, Aug 30, 2005 at 08:56:25PM -0700, Tony Luck wrote:
> On 8/30/05, Keith Owens <kaos@sgi.com> wrote:
> > Tony, can you give some indication on your plans for my MCA/INIT
> > rewrite?  Will you send it to Linus in the next couple of weeks or will
> > it have to wait for 2.6.15 to open?
> 
> Keith,
> 
> It is a big enough piece that I don't expect to get to dig through it and test
> before Linus hits us with 2.6.14-rc1 and issues the "slow-down" command.
> So, realistically this looks to be 2.6.15 material (unless there are others
> on the list that would like to see this in earlier and provide comments and
> test run results ... hint hint).

I would really like this in for the next distributor pull of the kernel
so it gets more exposure there.  I have used the stuff Keith posted on
8/17 and did not see anything handled incorrectly.  I will retest with
the latest today.  The machine even handled simulataneous failures the
three times I three them at it.  I only tried one nmi and did not attempt
to resume from it, but at least the register information made sense.
Compared to what I have seen in the past from NMIs, this was a vast
improvement.

What testing would you like to see?  I do not understand the issues enough
to comment on the patches, but could possibly coax a couple other people
who are into spending a half-day on it.

Thanks, Robin

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (9 preceding siblings ...)
  2005-08-31 11:28 ` Robin Holt
@ 2005-09-11 22:43 ` Luck, Tony
  2005-09-11 22:56 ` Linus Torvalds
                   ` (126 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2005-09-11 22:43 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	rsync://rsync.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/hp/sim/boot/boot_head.S     |   31 
 arch/ia64/kernel/asm-offsets.c        |   40 -
 arch/ia64/kernel/ivt.S                |    1 
 arch/ia64/kernel/mca.c                |  823 ++++++++++++--------
 arch/ia64/kernel/mca_asm.S            | 1352 +++++++++++++++++-----------------
 arch/ia64/kernel/mca_drv.c            |   37 
 arch/ia64/kernel/minstate.h           |   88 --
 arch/ia64/kernel/palinfo.c            |  123 +--
 arch/ia64/kernel/salinfo.c            |   62 -
 arch/ia64/kernel/unwind.c             |   22 
 arch/ia64/mm/init.c                   |   15 
 arch/ia64/sn/kernel/setup.c           |   30 
 include/asm-ia64/mca.h                |  102 +-
 include/asm-ia64/mca_asm.h            |  131 ---
 include/asm-ia64/ptrace.h             |    2 
 include/asm-ia64/sn/sn_feature_sets.h |   57 +
 include/asm-ia64/sn/sn_sal.h          |   36 
 include/asm-ia64/thread_info.h        |    2 
 include/asm-ia64/unwind.h             |    7 
 include/linux/sched.h                 |    2 
 kernel/sched.c                        |   26 
 21 files changed, 1651 insertions(+), 1338 deletions(-)

Jack Steiner:
  [IA64-SGI] Add new vendor-specific SAL calls for:

Keith Owens:
  MCA/INIT: scheduler hooks
  [IA64] MCA/INIT: add an extra thread_info flag
  [IA64] MCA/INIT: avoid reading INIT record during INIT event
  MCA/INIT: use per cpu stacks
  [IA64] MCA/INIT: remove the physical mode path from minstate.h
  [IA64] MCA/INIT: remove obsolete unwind code

Peter Chubb:
  [IA64] Add PAL_VM_SUMMARY/PAL_MEM_ATTRIB to bootloader for SKI
  [IA64] Allow /proc/pal/cpu0/vm_info under the simulator
  [IA64] Fix nasty VMLPT problem...


^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (10 preceding siblings ...)
  2005-09-11 22:43 ` Luck, Tony
@ 2005-09-11 22:56 ` Linus Torvalds
  2005-09-12  0:17 ` Keith Owens
                   ` (125 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Linus Torvalds @ 2005-09-11 22:56 UTC (permalink / raw)
  To: linux-ia64



On Sun, 11 Sep 2005, Luck, Tony wrote:
> 
> 	rsync://rsync.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release
>
>  include/linux/sched.h                 |    2 
>  kernel/sched.c                        |   26 

I took a look, and quite frankly, I'm not at all happy about this.

What's going on? Why would machine check interrupts muck with these 
things? Pls explain.. This is a total violation of all layering, and 
anybody who uses these things is just going to cause strange oopses etc 
crap.

Wazzup?

		Linus

^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (11 preceding siblings ...)
  2005-09-11 22:56 ` Linus Torvalds
@ 2005-09-12  0:17 ` Keith Owens
  2005-09-12  1:11 ` Luck, Tony
                   ` (124 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Keith Owens @ 2005-09-12  0:17 UTC (permalink / raw)
  To: linux-ia64

On Sun, 11 Sep 2005 15:56:28 -0700 (PDT), 
Linus Torvalds <torvalds@osdl.org> wrote:
>
>
>On Sun, 11 Sep 2005, Luck, Tony wrote:
>> 
>> 	rsync://rsync.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release
>>
>>  include/linux/sched.h                 |    2 
>>  kernel/sched.c                        |   26 
>
>I took a look, and quite frankly, I'm not at all happy about this.
>
>What's going on? Why would machine check interrupts muck with these 
>things? Pls explain.. This is a total violation of all layering, and 
>anybody who uses these things is just going to cause strange oopses etc 
>crap.
>
>Wazzup?

http://lkml.org/lkml/2005/9/8/315/.


^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (12 preceding siblings ...)
  2005-09-12  0:17 ` Keith Owens
@ 2005-09-12  1:11 ` Luck, Tony
  2005-09-12  3:19 ` Linus Torvalds
                   ` (123 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2005-09-12  1:11 UTC (permalink / raw)
  To: linux-ia64

>>I took a look, and quite frankly, I'm not at all happy about this.
>>
>>What's going on? Why would machine check interrupts muck with these 
>>things? Pls explain.. This is a total violation of all layering, and 
>>anybody who uses these things is just going to cause strange oopses etc 
>>crap.
>>
>>Wazzup?
>
>http://lkml.org/lkml/2005/9/8/315/.

Sorry.  I should have put that link into the original "please-pull"
message (or even better, checked to see if you'd seen this thread
before putting it into my release tree ... silence on LKML often
means that you didn't read the thread).

Does it help to lower your unhappiness level?

Can you see a better way to do this?

-Tony

^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (13 preceding siblings ...)
  2005-09-12  1:11 ` Luck, Tony
@ 2005-09-12  3:19 ` Linus Torvalds
  2005-09-12  3:24 ` Linus Torvalds
                   ` (122 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Linus Torvalds @ 2005-09-12  3:19 UTC (permalink / raw)
  To: linux-ia64



On Mon, 12 Sep 2005, Keith Owens wrote:

> On Sun, 11 Sep 2005 15:56:28 -0700 (PDT), 
> Linus Torvalds <torvalds@osdl.org> wrote:
> >
> >What's going on? Why would machine check interrupts muck with these 
> >things? Pls explain.. This is a total violation of all layering, and 
> >anybody who uses these things is just going to cause strange oopses etc 
> >crap.
> >
> >Wazzup?
> 
> http://lkml.org/lkml/2005/9/8/315/.

That doesn't explain anything that I can't see in the code.

So let me repeat the question: why the hell does a MCA muck with global 
(and very core) kernel state? Why doesn't it just set perfectly normal 
internal ia64 state? 

The fact that it uses a separate stack is _not_ an explanation. That's 
just throwing words around. Everybody uses a separate stack. x86 does it 
for every single interrupt. That doesn't make x86 change global scheduler 
state.

ia64 is doing something WRONG. Stop it. Or give me a real explanation of
what the f*ck ia64 is doing that makes it want to modify core scheduler
data structures from the machine check handler. It has _no_ business doing 
that.

ia64 does have a perfectly fine pointer to "current": it's the ia64 TP 
register. So change _that_ instead, and if there's some silly unwinder 
that depends on global state, fix it.

			Linus

^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (14 preceding siblings ...)
  2005-09-12  3:19 ` Linus Torvalds
@ 2005-09-12  3:24 ` Linus Torvalds
  2005-09-12  3:37 ` Linus Torvalds
                   ` (121 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Linus Torvalds @ 2005-09-12  3:24 UTC (permalink / raw)
  To: linux-ia64



On Sun, 11 Sep 2005, Luck, Tony wrote:
> >>
> >>Wazzup?
> >
> >http://lkml.org/lkml/2005/9/8/315/.
> 
> Does it help to lower your unhappiness level?

Not in the least.

> Can you see a better way to do this?

I still don't even see the point in the first place. 

Everything Keith says about MCA/INIT is true on x86 about NMI's. That has 
nothing to do with "currently runnable process". And it sure as hell 
doesn't mean that you'd _change_ the kernel notion of what the currently 
runnable process is.

		Linus

^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (15 preceding siblings ...)
  2005-09-12  3:24 ` Linus Torvalds
@ 2005-09-12  3:37 ` Linus Torvalds
  2005-09-12  4:05 ` Linus Torvalds
                   ` (120 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Linus Torvalds @ 2005-09-12  3:37 UTC (permalink / raw)
  To: linux-ia64



On Sun, 11 Sep 2005, Linus Torvalds wrote:
> 
> Everything Keith says about MCA/INIT is true on x86 about NMI's. That has 
> nothing to do with "currently runnable process". And it sure as hell 
> doesn't mean that you'd _change_ the kernel notion of what the currently 
> runnable process is.

I don't think ia64 people realize how _wrong_ it is to just switch ->curr 
around. It doesn't matter if you "set it back" when the MCA ends: it may 
look atomic wrt _that_ CPU, but you're doing things that are fundamentally 
illegal. 

For example, if one CPU starts messing around with cpu_curr() on that CPU, 
another CPU may be doing "task_rq_lock()" on a task that is currently 
running on that CPU. 

THAT CPU MUST NOT CHANGE THE "current process" WITHOUT GETTING THE 
RUNQUEUE LOCK! Other CPU's are looking at it, and the scheduler uses 
rq->curr to decide whether to wake stuff up or not etc.

In other words, anybody who changes rq->curr without getting the lock IS 
BUGGY. 

And even if it wasn't horribly buggy, it's just conceptually really really 
wrong.

Unless somebody can convince me otherwise (and quite frankly, I doubt you
can) I'm going to remove at _least_ the function that writes ->curr
(set_curr_task()) tomorrow. 

I might leave the one that reads it, although quite frankly, I don't see
the point of that one either, but at least it's not totally broken in
theory (although reading the value without having locked the rq is
unreliable unless "cpu = currentcpu").

So you'd better re-architect that ia64 bug, or have a damn good reason for 
the crap code that convinces me that you're not just doing some seriously 
damaging drugs.

And yes, I'm upset, because quite frankly, I'd have expected people to 
have better taste. Trying to pass off something like this is just 
inexcusable.

		Linus

^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (16 preceding siblings ...)
  2005-09-12  3:37 ` Linus Torvalds
@ 2005-09-12  4:05 ` Linus Torvalds
  2005-09-12  4:39 ` Keith Owens
                   ` (119 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Linus Torvalds @ 2005-09-12  4:05 UTC (permalink / raw)
  To: linux-ia64



On Sun, 11 Sep 2005, Linus Torvalds wrote:
>
> In other words, anybody who changes rq->curr without getting the lock IS 
> BUGGY. 

Just a few minutes of looking around in kernel/sched.c should have made 
this clear.

For example, look at 

	wait_task_inactive(task_t *p)

which is used by ptrace to make sure that the task we're going to ptrace 
is quiescent.

So walk through it. Let's say that CPU#0 is the ptracer, and is waiting 
for its child to become inactive on CPU#1. It gets the rq spinlock, and 
because your MCA "stole away" the thing momentarily and did its own magic 
task switch, we do _not_ see it as being "task_running()" on CPU#1 any 
more. So we go on and start doing ptrace operations.

But oops - it came back. It _was_ still running on CPU#1, and it hasn't 
actually had time to save all the register state away on the stack yet. So 
ptrace gets the wrong values altogether, because the rq->curr hacking made 
the value that we _depended_ on being stable not be stable at all.

Or, if that felt a bit too esoteric, I suspect that every _single_ use of 
"task_rq_lock()" is a potential for bugs. IOW, by doing a "task switch" 
the wrong way, you've basically invalidated pretty much all of the real 
scheduler.

		Linus

^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (17 preceding siblings ...)
  2005-09-12  4:05 ` Linus Torvalds
@ 2005-09-12  4:39 ` Keith Owens
  2005-09-12 14:49 ` Linus Torvalds
                   ` (118 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Keith Owens @ 2005-09-12  4:39 UTC (permalink / raw)
  To: linux-ia64

On Sun, 11 Sep 2005 20:37:07 -0700 (PDT),
Linus Torvalds <torvalds@osdl.org> wrote:
LT>I don't think ia64 people realize how _wrong_ it is to just switch ->curr
LT>around. It doesn't matter if you "set it back" when the MCA ends: it may
LT>look atomic wrt _that_ CPU, but you're doing things that are fundamentally
LT>illegal.
LT>
LT>For example, if one CPU starts messing around with cpu_curr() on that CPU,
LT>another CPU may be doing "task_rq_lock()" on a task that is currently
LT>running on that CPU.
LT>
LT>THAT CPU MUST NOT CHANGE THE "current process" WITHOUT GETTING THE
LT>RUNQUEUE LOCK! Other CPU's are looking at it, and the scheduler uses
LT>rq->curr to decide whether to wake stuff up or not etc.

Or does something that stops the scheduler running on other cpus, which
ia64 does.  You are probably unaware that MCA/INIT cause the _entire_
system to rendezvous.  All cpus are driven into MCA/INIT code, not just
the current cpu.  So the scheduler cannot run on any cpu during
MCA/INIT.

LT>In other words, anybody who changes rq->curr without getting the lock IS
LT>BUGGY.

MCA/INIT are completely asynchronous.  They can occur at any time, when
the OS is in any state.  Including when one of the cpus is already
holding the runqueue lock.  Trying to get any lock from MCA/INIT state
is asking for deadlock.

LT>Unless somebody can convince me otherwise (and quite frankly, I doubt you
LT>can) I'm going to remove at _least_ the function that writes ->curr
LT>(set_curr_task()) tomorrow.

Removing set_curr_task() means that we cannot get decent backtraces for
all tasks during MCA/INIT.  There is no point in having an architecture
that can recover from some hardware errors, if the backtraces are no
good.

Let's see if I can explain the strange ia64 MCA process.  All of this
is mandated by Intel's specification for ia64 SAL, error recovery and
and unwind, it is not as if we have a choice here.

* MCA occurs on one cpu, usually due to a double bit memory error.
  This is the monarch cpu.

* SAL sends an MCA rendezvous interrupt (which is a normal interrupt)
  to all the other cpus, the slaves.

* Slave cpus that receive the MCA interrupt call down into SAL, they
  end up spinning disabled while the MCA is being serviced.

* If any slave cpu was already spinning disabled when the MCA occurred
  then it cannot service the MCA interrupt.  SAL waits ~20 seconds then
  sends an unmaskable INIT event to the slave cpus that have not
  already rendezvoused.

* Because MCA/INIT can be delivered at any time, including when the cpu
  is down in PAL in physical mode, the registers at the time of the
  event are _completely_ undefined.  In particular the MCA/INIT
  handlers cannot rely on the thread pointer, PAL physical mode can
  (and does) modify TP.  It is allowed to do that as long as it resets
  TP on return.  However MCA/INIT events expose us to these PAL
  internal TP changes.  Hence curr_task().

* If an MCA/INIT event occurs while the kernel was running (not user
  space) and the kernel has called PAL then the MCA/INIT handler cannot
  assume that the kernel stack is in a fit state to be used.  Mainly
  because PAL may or may not maintain the stack pointer internally.
  Because the MCA/INIT handlers cannot trust the kernel stack, they
  have to use their own, per-cpu stacks.

* Once all slaves have rendezvoused and are spinning disabled, the
  monarch is entered.  The monarch now tries to diagnose the problem
  and decide if it can recover or not.

* Part of the monarch's job is to look at the state of all the other
  tasks.  The only way to do that on ia64 is to call the unwinder,
  as mandated by Intel.

* The starting point for the unwind depends on whether a task is
  running or not.  That is, whether it is on a cpu or is blocked.  The
  monarch has to determine whether or not a task is on a cpu before it
  knows how to start unwinding it.  The tasks that received an MCA or
  INIT event are no longer running, they have been converted to blocked
  tasks.  But (and its a big but), the cpus that received the MCA
  rendezvous interrupt are still running on their normal kernel stacks!

* To distinguish between these two cases, the monarch must know which
  tasks are on a cpu and which are not.  Hence each slave cpu that
  switches to an MCA/INIT stack, registers its new stack using
  set_curr_task(), so the monarch can tell that the _original_ task is
  no longer running on that cpu.  That gives us a decent chance of
  getting a valid backtrace of the _original_ task.

* MCA/INIT can be nested, to a depth of 2 on any cpu.  In the case of a
  nested error, we want diagnostics on the MCA/INIT handler that
  failed, not on the task that was originally running.  Again this
  requires set_curr_task() so the MCA/INIT handlers can register their
  own stack as running on that cpu.  Then a recursive error gets a
  trace of the failing handler's "task".

I agree that the scheduler hooks are layer violations.  Unfortunately
MCA/INIT start off as massive layer violations (can occur at _any_
time) and they build from there.

At least ia64 makes an attempt at recovering from hardware errors, but
it is a difficult problem because of the asynchronous nature of these
errors.  When processing an unmaskable interrupt we sometimes need
special code to cope with our inability to take any locks.

LT>Everything Keith says about MCA/INIT is true on x86 about NMI's. That has
LT>nothing to do with "currently runnable process". And it sure as hell
LT>doesn't mean that you'd _change_ the kernel notion of what the currently
LT>runnable process is.

Wrong.  x86 NMI typically gets delivered to one cpu, MCA/INIT gets sent
to all cpus.  x86 NMI cannot be nested, MCA/INIT can.  x86 has a
separate struct task which points to one of multiple kernel stacks,
ia64 has the struct task embedded in the single kernel stack[1].  x86
does not call the BIOS so the NMI handler does not have to worry about
any registers having changed, ia64 MCA/INIT can occur while the cpu is
in PAL in physical mode, with undefined registers and an undefined
kernel stack.  i386 backtrace is not very sensitive to whether a
process is running or not, ia64 unwind is very, very sensitive to
whether a process is running or not.

[1] My original design called for ia64 to separate its struct task and
    the kernel stacks.  Then the MCA/INIT data would be chained stacks
    like i386 interrupt stacks.  But that required radical surgery on
    the rest of ia64, plus extra hard wired TLB entries with its
    associated performance degradation.  David Mosberger vetoed that
    approach.  Which meant separate "tasks" for the MCA/INIT handlers.


^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (18 preceding siblings ...)
  2005-09-12  4:39 ` Keith Owens
@ 2005-09-12 14:49 ` Linus Torvalds
  2005-09-12 15:13 ` Keith Owens
                   ` (117 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Linus Torvalds @ 2005-09-12 14:49 UTC (permalink / raw)
  To: linux-ia64



On Mon, 12 Sep 2005, Keith Owens wrote:
> 
> Or does something that stops the scheduler running on other cpus, which
> ia64 does.  You are probably unaware that MCA/INIT cause the _entire_
> system to rendezvous.  All cpus are driven into MCA/INIT code, not just
> the current cpu.  So the scheduler cannot run on any cpu during
> MCA/INIT.

Ok, I definitely missed that part.

Then, we should add a huge honking comment somewhere there, to make it 
obvious that those functions are only usable within that context. And 
probably make them #ifdef CONFIG_IA64 too (and hide them in shame at the 
bottom of the file), so that nobody can ever use them for anything else. 

For example, right now the thing says "this function must be called with 
interrupts disabled". That's a piece of crap. If it had said "this 
function must be called only when all CPU's in the system have been 
stopped", that's something else altogether.

		Linus

^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (19 preceding siblings ...)
  2005-09-12 14:49 ` Linus Torvalds
@ 2005-09-12 15:13 ` Keith Owens
  2005-09-12 17:51 ` David Mosberger-Tang
                   ` (116 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Keith Owens @ 2005-09-12 15:13 UTC (permalink / raw)
  To: linux-ia64

On Mon, 12 Sep 2005 07:49:56 -0700 (PDT), 
Linus Torvalds <torvalds@osdl.org> wrote:
>
>
>On Mon, 12 Sep 2005, Keith Owens wrote:
>> 
>> Or does something that stops the scheduler running on other cpus, which
>> ia64 does.  You are probably unaware that MCA/INIT cause the _entire_
>> system to rendezvous.  All cpus are driven into MCA/INIT code, not just
>> the current cpu.  So the scheduler cannot run on any cpu during
>> MCA/INIT.
>
>Ok, I definitely missed that part.
>
>Then, we should add a huge honking comment somewhere there, to make it 
>obvious that those functions are only usable within that context. And 
>probably make them #ifdef CONFIG_IA64 too (and hide them in shame at the 
>bottom of the file), so that nobody can ever use them for anything else. 
>
>For example, right now the thing says "this function must be called with 
>interrupts disabled". That's a piece of crap. If it had said "this 
>function must be called only when all CPU's in the system have been 
>stopped", that's something else altogether.

I'll give you that one, it should have said "interrupts disabled on all
cpus", and do a patch against git tommorrow.  Then I can get back to
taking my seriously damaging drugs[1], AKA working on IA64 recovery.

BTW Linus, are you aware that your mailer is putting spaces at the end
of almost every text line?

[1] http://marc.theaimsgroup.com/?l=linux-ia64&m\x112649624832016&w=2


^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (20 preceding siblings ...)
  2005-09-12 15:13 ` Keith Owens
@ 2005-09-12 17:51 ` David Mosberger-Tang
  2005-10-11 22:11 ` Luck, Tony
                   ` (115 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: David Mosberger-Tang @ 2005-09-12 17:51 UTC (permalink / raw)
  To: linux-ia64

Speaking of big honking comments, it'd also be good (actually: very
necessary) to have something in Documentation/ia64/mca.txt that
explains the environment in which MCA/INIT are being executed. 
Keith's bulleted list could serve as a starting point, along with
answers to questions that have come up along the way (e.g., should you
worry about the interrupted task's memory being bad and causing ECCs).
 Without such a document, I fear we'll be going around in circles a
people add new features and "fixes" in the future...

  --david

On 9/12/05, Keith Owens <kaos@sgi.com> wrote:
> On Mon, 12 Sep 2005 07:49:56 -0700 (PDT),
> Linus Torvalds <torvalds@osdl.org> wrote:
> >
> >
> >On Mon, 12 Sep 2005, Keith Owens wrote:
> >>
> >> Or does something that stops the scheduler running on other cpus, which
> >> ia64 does.  You are probably unaware that MCA/INIT cause the _entire_
> >> system to rendezvous.  All cpus are driven into MCA/INIT code, not just
> >> the current cpu.  So the scheduler cannot run on any cpu during
> >> MCA/INIT.
> >
> >Ok, I definitely missed that part.
> >
> >Then, we should add a huge honking comment somewhere there, to make it
> >obvious that those functions are only usable within that context. And
> >probably make them #ifdef CONFIG_IA64 too (and hide them in shame at the
> >bottom of the file), so that nobody can ever use them for anything else.
> >
> >For example, right now the thing says "this function must be called with
> >interrupts disabled". That's a piece of crap. If it had said "this
> >function must be called only when all CPU's in the system have been
> >stopped", that's something else altogether.
> 
> I'll give you that one, it should have said "interrupts disabled on all
> cpus", and do a patch against git tommorrow.  Then I can get back to
> taking my seriously damaging drugs[1], AKA working on IA64 recovery.
> 
> BTW Linus, are you aware that your mailer is putting spaces at the end
> of almost every text line?
> 
> [1] http://marc.theaimsgroup.com/?l=linux-ia64&m\x112649624832016&w=2
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


-- 
Mosberger Consulting LLC, voice/fax: 510-744-9372,
http://www.mosberger-consulting.com/
35706 Runckel Lane, Fremont, CA 94536

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (21 preceding siblings ...)
  2005-09-12 17:51 ` David Mosberger-Tang
@ 2005-10-11 22:11 ` Luck, Tony
  2005-10-28 23:52 ` Luck, Tony
                   ` (114 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2005-10-11 22:11 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	rsync://rsync.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 drivers/char/mbcs.c |    3 +++
 1 files changed, 3 insertions(+)

diff-tree 96f339c6b95344942fe5fce012ff4f2a3b2cb80d (from ed39f731ab2e77e58122232f6e27333331d7793d)
Author: Greg Edwards <edwardsg@sgi.com>
Date:   Wed Sep 28 17:05:19 2005 -0500

    [IA64] mbcs_init() should give up unless running on sn2
    
    CONFIG_SGI_MBCS is enabled in generic kernels, but the driver may
    oops some other platforms.  Check whether we are running on sn2
    and bail out if we are not before doing anything dangerous.
    
    Acked-by: Bruce Losure <blosure@americas.sgi.com>
    Signed-off-by: Greg Edwards <edwardsg@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/drivers/char/mbcs.c b/drivers/char/mbcs.c
--- a/drivers/char/mbcs.c
+++ b/drivers/char/mbcs.c
@@ -830,6 +830,9 @@ static int __init mbcs_init(void)
 {
 	int rv;
 
+	if (!ia64_platform_is("sn2"))
+		return -ENODEV;
+
 	// Put driver into chrdevs[].  Get major number.
 	rv = register_chrdev(mbcs_major, DEVICE_NAME, &mbcs_ops);
 	if (rv < 0) {

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (22 preceding siblings ...)
  2005-10-11 22:11 ` Luck, Tony
@ 2005-10-28 23:52 ` Luck, Tony
  2005-10-28 23:57 ` Linus Torvalds
                   ` (113 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2005-10-28 23:52 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/Kconfig                        |   98 +-
 arch/ia64/configs/bigsur_defconfig       |  395 ++++++---
 arch/ia64/configs/gensparse_defconfig    | 1319 +++++++++++++++++++++++++++++++
 arch/ia64/configs/tiger_defconfig        |   86 +-
 arch/ia64/configs/zx1_defconfig          |   92 +-
 arch/ia64/defconfig                      |  265 ++++--
 arch/ia64/hp/common/hwsw_iommu.c         |   13 
 arch/ia64/hp/common/sba_iommu.c          |   45 -
 arch/ia64/hp/sim/simscsi.c               |   13 
 arch/ia64/kernel/acpi.c                  |   13 
 arch/ia64/kernel/efi.c                   |  510 +++++++----
 arch/ia64/kernel/irq.c                   |   12 
 arch/ia64/kernel/mca.c                   |    4 
 arch/ia64/kernel/module.c                |    6 
 arch/ia64/kernel/patch.c                 |   16 
 arch/ia64/kernel/ptrace.c                |   28 
 arch/ia64/kernel/setup.c                 |   67 +
 arch/ia64/kernel/smp.c                   |   10 
 arch/ia64/kernel/smpboot.c               |    6 
 arch/ia64/kernel/uncached.c              |   17 
 arch/ia64/lib/swiotlb.c                  |  102 ++
 arch/ia64/mm/Makefile                    |    5 
 arch/ia64/mm/contig.c                    |    4 
 arch/ia64/mm/discontig.c                 |   43 -
 arch/ia64/mm/init.c                      |    2 
 arch/ia64/mm/numa.c                      |   24 
 arch/ia64/mm/tlb.c                       |   21 
 arch/ia64/pci/pci.c                      |   58 -
 arch/ia64/sn/kernel/bte.c                |    2 
 arch/ia64/sn/kernel/io_init.c            |    4 
 arch/ia64/sn/kernel/setup.c              |  162 +--
 arch/ia64/sn/kernel/sn2/sn2_smp.c        |   31 
 arch/ia64/sn/kernel/sn2/sn_hwperf.c      |    4 
 arch/ia64/sn/kernel/tiocx.c              |   63 -
 arch/ia64/sn/kernel/xpc.h                |  386 +++++++--
 arch/ia64/sn/kernel/xpc_channel.c        |  333 ++++---
 arch/ia64/sn/kernel/xpc_main.c           |  398 ++++++---
 arch/ia64/sn/kernel/xpc_partition.c      |  501 ++++++++---
 arch/ia64/sn/pci/pci_dma.c               |   46 +
 arch/ia64/sn/pci/pcibr/pcibr_reg.c       |   59 -
 arch/ia64/sn/pci/tioca_provider.c        |   32 
 arch/ia64/sn/pci/tioce_provider.c        |   30 
 drivers/char/agp/sgi-agp.c               |    1 
 drivers/char/mmtimer.c                   |    4 
 drivers/char/snsc.c                      |    4 
 include/asm-ia64/machvec.h               |    2 
 include/asm-ia64/machvec_hpzx1.h         |   21 
 include/asm-ia64/machvec_hpzx1_swiotlb.h |    3 
 include/asm-ia64/meminit.h               |    6 
 include/asm-ia64/mmzone.h                |   10 
 include/asm-ia64/nodedata.h              |    4 
 include/asm-ia64/page.h                  |    6 
 include/asm-ia64/sn/arch.h               |   38 
 include/asm-ia64/sn/io.h                 |   11 
 include/asm-ia64/sn/klconfig.h           |   34 
 include/asm-ia64/sn/l1.h                 |   12 
 include/asm-ia64/sn/nodepda.h            |    1 
 include/asm-ia64/sn/sn_cpuid.h           |    3 
 include/asm-ia64/sn/sn_sal.h             |   59 +
 include/asm-ia64/sn/tioca_provider.h     |   14 
 include/asm-ia64/sn/tiocx.h              |    3 
 include/asm-ia64/sn/xp.h                 |   18 
 include/asm-ia64/sparsemem.h             |   20 
 63 files changed, 4234 insertions(+), 1365 deletions(-)

Alex Williamson:
      [IA64] more robust zx1/sx1000 machvec support

Bjorn Helgaas:
      [IA64] Update default configs
      [IA64] ia64: add ar.k0 usage note
      [IA64] move ACPI IOSAPIC locality domain mapping from pci.c to acpi.c
      [IA64] respect ACPI producer/consumer flag for PCI root bridges

Bob Picco:
      V5 ia64 SPARSEMEM - Kconfig and Makefile
      V5 ia64 SPARSEMEM - eliminate contig_page_data
      V5 ia64 SPARSEMEM - conditional changes for SPARSEMEM
      V5 ia64 SPARSEMEM - SPARSEMEM code changes
      V5 ia64 SPARSEMEM - gensparse_defconfig

Bruce Losure:
      [IA64] Altix patch for fpga reset

Cliff Wickman:
      [IA64] ptrace - find memory sharers on children list

Dean Nelson:
      [IA64-SGI] get XPC to cleanly disengage from remote memory references
      [IA64-SGI] fixes for XPC disengage and open/close protocol
      [IA64-SGI] XPC changes to support more than 2k nasids
      [IA64-SGI] cleanup the way XPC locates the reserved page

Dean Roe:
      [IA64-SGI] Remove references to the SN bist_lock
      [IA64] - Avoid slow TLB purges on SGI Altix systems

H. J. Lu:
      [IA64] Fix 2.6 kernel for the new ia64 assembler

hawkes@sgi.com:
      [IA64] wider use of for_each_cpu_mask() in arch/ia64
      [IA64] another place to use for_each_cpu_mask() in arch/ia64

Jack Steiner:
      [IA64] Cleanup use of various #defines related to nodes
      [IA64] Increase max NR_CPUS on IA64 from 512 to 1024
      [IA64-SGI] Increase max system size of SGI SN systems

Khalid Aziz:
      [IA64] include EFI memory information in /proc/iomem

Mark Maule:
      [IA64-SGI] volatile semantics in places where it seems necessary
      [IA64-SGI] fix sn_pci_legacy_read/fix sn_pci_legacy_write

Peter Chubb:
      [IA64] Allow simulator to use bigger disks

Russ Anderson:
      [IA64-SGI] fix bte_copy() calling get_nasid() while preemptible

Siddha, Suresh B:
      [IA64] fix siblings field value in /proc/cpuinfo

Tony Luck:
      [IA64] simplified efi memory map parsing
      [IA64] Need to include <asm/sn/io.h> in a few more places.
      [IA64] Two more uses of cpuid_to_cnodeid() must go.
      [IA64] end of kernel 'data' is at _end, not _edata
      [IA64] fix warning unused variable `g'


^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (23 preceding siblings ...)
  2005-10-28 23:52 ` Luck, Tony
@ 2005-10-28 23:57 ` Linus Torvalds
  2005-10-29  0:01 ` Luck, Tony
                   ` (112 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Linus Torvalds @ 2005-10-28 23:57 UTC (permalink / raw)
  To: linux-ia64



On Fri, 28 Oct 2005, Luck, Tony wrote:
> 
> please pull from:
> 
> 	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

Hmm. I get:

	* committish: 4bcde03d41d2264edb4ea3c47cb27da1e2609e48
	  branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6
	Already up-to-date.

if you _just_ pushed the thing out, then it may not have mirrored (I'm 
really happy that there's git.kernel.org, but "master" still ends up 
having the advantage of being immediate).

		Linus

^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (24 preceding siblings ...)
  2005-10-28 23:57 ` Linus Torvalds
@ 2005-10-29  0:01 ` Luck, Tony
  2005-10-31 19:31 ` Luck, Tony
                   ` (111 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2005-10-29  0:01 UTC (permalink / raw)
  To: linux-ia64


> if you _just_ pushed the thing out, then it may not have mirrored (I'm 
> really happy that there's git.kernel.org, but "master" still ends up 
> having the advantage of being immediate).

Yes, I just pushed (about 5 minutes before the e-mail).  So either
convert the path to master.kernel.org ... or wait about another
15 minutes for the mirrors to catch up.

-Tony

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (25 preceding siblings ...)
  2005-10-29  0:01 ` Luck, Tony
@ 2005-10-31 19:31 ` Luck, Tony
  2005-11-07 22:09 ` Luck, Tony
                   ` (110 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2005-10-31 19:31 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git swiotlb

This is John Linville's patch series that moves swiotlb.c from
arch/ia64/lib/swiotlb.c to lib/swiotlb.c.

Thanks!

-Tony

 arch/ia64/lib/swiotlb.c          |  759 -------------------------------
 arch/ia64/Kconfig                |    4 
 arch/ia64/lib/Makefile           |    2 
 arch/x86_64/kernel/Makefile      |    2 
 include/asm-x86_64/dma-mapping.h |   31 +
 include/asm-x86_64/swiotlb.h     |    8 
 lib/Makefile                     |    2 
 lib/swiotlb.c                    |  933 ++++++++++++++++++++++++++++++++++++---
 8 files changed, 914 insertions(+), 827 deletions(-)

John W. Linville:
      swiotlb: move from arch/ia64/lib/ to lib/
      swiotlb: cleanup some code duplication cruft
      swiotlb: support syncing sub-ranges of mappings
      swiotlb: support syncing DMA_BIDIRECTIONAL mappings
      swiotlb: file header comments
      x86_64: implement dma_sync_single_range_for_{cpu,device}

Tony Luck:
      Removed remaining PCI specific references from swiotlb.c


^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (26 preceding siblings ...)
  2005-10-31 19:31 ` Luck, Tony
@ 2005-11-07 22:09 ` Luck, Tony
  2005-11-09  5:52 ` Luck, Tony
                   ` (109 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2005-11-07 22:09 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/Kconfig       |    1 +
 include/asm-ia64/page.h |    1 +
 2 files changed, 2 insertions(+)

Bob Picco:
      [IA64] Recent SPARSEMEM and DISCONTIG changes break some builds

Dean Nelson:
      [IA64] restrict CONFIG_SGI_SN_XP to IA64_GENERIC or IA64_SGI_SN2


^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (27 preceding siblings ...)
  2005-11-07 22:09 ` Luck, Tony
@ 2005-11-09  5:52 ` Luck, Tony
  2005-11-10 23:27 ` Luck, Tony
                   ` (108 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2005-11-09  5:52 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/kernel/mca_drv.c              |    3 ++-
 arch/ia64/sn/pci/pcibr/pcibr_provider.c |    4 ++--
 arch/ia64/sn/pci/pcibr/pcibr_reg.c      |    2 +-
 3 files changed, 5 insertions(+), 4 deletions(-)

Mark Maule:
      [IA64] altix: misc pci interrupt related fixes

Russ Anderson:
      [IA64] MCA recovery: pfn_valid() needs a pfn
      [IA64] MCA recovery: Bump reference count on bad pages


^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (28 preceding siblings ...)
  2005-11-09  5:52 ` Luck, Tony
@ 2005-11-10 23:27 ` Luck, Tony
  2005-11-11 20:07 ` Luck, Tony
                   ` (107 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2005-11-10 23:27 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/kernel/efi.c              |    2 
 arch/ia64/kernel/kprobes.c          |   22 +++---
 arch/ia64/kernel/mca.c              |  120 ++++++++++++++++++++++++++++--------
 arch/ia64/kernel/mca_drv.c          |   17 +++--
 arch/ia64/kernel/process.c          |    6 +
 arch/ia64/kernel/setup.c            |    1 
 arch/ia64/kernel/signal.c           |   11 +--
 arch/ia64/kernel/traps.c            |   44 ++++++-------
 arch/ia64/mm/discontig.c            |   19 ++---
 arch/ia64/mm/tlb.c                  |   91 +++++++++++++--------------
 arch/ia64/pci/pci.c                 |  106 ++++++++++++++++++++++++-------
 arch/ia64/sn/kernel/io_init.c       |    2 
 arch/ia64/sn/kernel/xpc.h           |    2 
 arch/ia64/sn/kernel/xpc_main.c      |  102 ++++++++++++++++++++++++++++++
 arch/ia64/sn/kernel/xpc_partition.c |    8 +-
 arch/ia64/sn/pci/tioce_provider.c   |    6 -
 include/asm-ia64/kdebug.h           |   30 ++++++++-
 include/asm-ia64/mmu_context.h      |   99 ++++++++++++++++-------------
 include/asm-ia64/tlbflush.h         |    1 
 19 files changed, 487 insertions(+), 202 deletions(-)

Bjorn Helgaas:
      [IA64] add the MMIO regions that are translated to I/O port space to /proc/iomem

Bob Picco:
      [IA64] fix memory less node allocation

Chen, Kenneth W:
      [IA64] make mmu_context.h and tlb.c 80-column friendly

David Mosberger-Tang:
      [IA64] align signal-frame even when not using alternate signal-stack

Dean Nelson:
      [IA64] utilize notify_die() for XPC disengage

Keith Owens:
      [IA64] Extend notify_die() hooks for IA64

Panagiotis Issaris:
      [IA64] Replace kcalloc(1, with kzalloc.

Peter Keilty:
      [IA64] Use bitmaps for efficient context allocation/free

Russ Anderson:
      [IA64] MCA recovery based on PSP bits


^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (29 preceding siblings ...)
  2005-11-10 23:27 ` Luck, Tony
@ 2005-11-11 20:07 ` Luck, Tony
  2005-11-29 21:56 ` Luck, Tony
                   ` (106 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2005-11-11 20:07 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

P.S. Robin Holt's "4-level page table" patch may sound a bit scary for the
last day of merge time ... but it provides a config option to choose either
3-level or 4-level, and the default stays at 3-level for all platforms except
Altix (with their multi-terabyte memory).  Apart from rescheduling a few
instructions in ivt.S handlers, his patch leaves the whole kernel unchanged
at a binary level when using 3-level page tables.

 arch/ia64/Kconfig               |   13 +++
 arch/ia64/configs/sn2_defconfig |    2 
 arch/ia64/defconfig             |    2 
 arch/ia64/kernel/ivt.S          |   63 ++++++++++++----
 arch/ia64/sn/kernel/setup.c     |  157 ++++++++++++++++++++++++++++++++++++++--
 include/asm-ia64/page.h         |    8 +-
 include/asm-ia64/pgalloc.h      |   19 ++++
 include/asm-ia64/pgtable.h      |   76 +++++++++++++++----
 8 files changed, 303 insertions(+), 37 deletions(-)

Mark Maule:
      [IA64-SGI] set altix preferred console

Robin Holt:
      [IA64] 4-level page tables


^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (30 preceding siblings ...)
  2005-11-11 20:07 ` Luck, Tony
@ 2005-11-29 21:56 ` Luck, Tony
  2005-12-12 18:20 ` Luck, Tony
                   ` (105 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2005-11-29 21:56 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/kernel/ia64_ksyms.c |    1 +
 arch/ia64/kernel/kprobes.c    |    2 +-
 arch/ia64/kernel/traps.c      |   18 ------------------
 include/asm-ia64/page.h       |    3 ++-
 4 files changed, 4 insertions(+), 20 deletions(-)

Dean Roe:
      [IA64] - Make pfn_valid more precise for SGI Altix systems

Keshavamurthy Anil S:
      [IA64] Remove getting break_num by decoding instruction

diff-tree 5a94bcfd2a18edcf368b3128c7df07b58e529932 (from b77dae5293efba42ea1ff04d410ee68e66d5b0cf)
Author: Keshavamurthy Anil S <anil.s.keshavamurthy@intel.com>
Date:   Tue Nov 22 14:15:49 2005 -0800

    [IA64] Remove getting break_num by decoding instruction
    
    break.b always sets cr.iim to 0 and the current code tries to
    get the break_num by decoding instruction. However, their
    seems to be a race condition while reading the regs->cr_iip,
    as on other cpu the break.b at regs->cr_iip might have been
    replaced with the original instruction as a result of
    unregister_kprobe() and hence decoding instruction to
    obtain break_num will result in wrong value in this case.
    
    Also includes changes to kprobes.c which now has to handle
    break number zero.
    
    Signed-off-by: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/kprobes.c b/arch/ia64/kernel/kprobes.c
index 801eeae..2895d6e 100644
--- a/arch/ia64/kernel/kprobes.c
+++ b/arch/ia64/kernel/kprobes.c
@@ -740,7 +740,7 @@ int __kprobes kprobe_exceptions_notify(s
 	switch(val) {
 	case DIE_BREAK:
 		/* err is break number from ia64_bad_break() */
-		if (args->err = 0x80200 || args->err = 0x80300)
+		if (args->err = 0x80200 || args->err = 0x80300 || args->err = 0)
 			if (pre_kprobes_handler(args))
 				ret = NOTIFY_STOP;
 		break;
diff --git a/arch/ia64/kernel/traps.c b/arch/ia64/kernel/traps.c
index fba5fdd..d3e0ecb 100644
--- a/arch/ia64/kernel/traps.c
+++ b/arch/ia64/kernel/traps.c
@@ -132,24 +132,6 @@ __kprobes ia64_bad_break (unsigned long 
 	siginfo_t siginfo;
 	int sig, code;
 
-	/* break.b always sets cr.iim to 0, which causes problems for
-	 * debuggers.  Get the real break number from the original instruction,
-	 * but only for kernel code.  User space break.b is left alone, to
-	 * preserve the existing behaviour.  All break codings have the same
-	 * format, so there is no need to check the slot type.
-	 */
-	if (break_num = 0 && !user_mode(regs)) {
-		struct ia64_psr *ipsr = ia64_psr(regs);
-		unsigned long *bundle = (unsigned long *)regs->cr_iip;
-		unsigned long slot;
-		switch (ipsr->ri) {
-		      case 0:  slot = (bundle[0] >>  5); break;
-		      case 1:  slot = (bundle[0] >> 46) | (bundle[1] << 18); break;
-		      default: slot = (bundle[1] >> 23); break;
-		}
-		break_num = ((slot >> 36 & 1) << 20) | (slot >> 6 & 0xfffff);
-	}
-
 	/* SIGILL, SIGFPE, SIGSEGV, and SIGBUS want these field initialized: */
 	siginfo.si_addr = (void __user *) (regs->cr_iip + ia64_psr(regs)->ri);
 	siginfo.si_imm = break_num;

diff-tree b77dae5293efba42ea1ff04d410ee68e66d5b0cf (from 624f54be206adf970cd8eece16446b027913e533)
Author: Dean Roe <roe@sgi.com>
Date:   Wed Nov 9 14:25:06 2005 -0600

    [IA64] - Make pfn_valid more precise for SGI Altix systems
    
    A single SGI Altix system can be divided into multiple partitions,
    each running their own instance of the Linux kernel.  pfn_valid()
    is currently not optimal for any but the first partition, since it
    does not compare the pfn with min_low_pfn before calling the more
    costly ia64_pfn_valid().
    
    Signed-off-by: Dean Roe <roe@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/ia64_ksyms.c b/arch/ia64/kernel/ia64_ksyms.c
index 0157281..5db9d3b 100644
--- a/arch/ia64/kernel/ia64_ksyms.c
+++ b/arch/ia64/kernel/ia64_ksyms.c
@@ -42,6 +42,7 @@ EXPORT_SYMBOL(clear_page);
 
 #ifdef CONFIG_VIRTUAL_MEM_MAP
 #include <linux/bootmem.h>
+EXPORT_SYMBOL(min_low_pfn);	/* defined by bootmem.c, but not exported by generic code */
 EXPORT_SYMBOL(max_low_pfn);	/* defined by bootmem.c, but not exported by generic code */
 #endif
 
diff --git a/include/asm-ia64/page.h b/include/asm-ia64/page.h
index 9dd9da1..5e6362a 100644
--- a/include/asm-ia64/page.h
+++ b/include/asm-ia64/page.h
@@ -110,8 +110,9 @@ extern int ia64_pfn_valid (unsigned long
 # define pfn_to_page(pfn)	(mem_map + (pfn))
 #elif defined(CONFIG_DISCONTIGMEM)
 extern struct page *vmem_map;
+extern unsigned long min_low_pfn;
 extern unsigned long max_low_pfn;
-# define pfn_valid(pfn)		(((pfn) < max_low_pfn) && ia64_pfn_valid(pfn))
+# define pfn_valid(pfn)		(((pfn) >= min_low_pfn) && ((pfn) < max_low_pfn) && ia64_pfn_valid(pfn))
 # define page_to_pfn(page)	((unsigned long) (page - vmem_map))
 # define pfn_to_page(pfn)	(vmem_map + (pfn))
 #endif

^ permalink raw reply related	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (31 preceding siblings ...)
  2005-11-29 21:56 ` Luck, Tony
@ 2005-12-12 18:20 ` Luck, Tony
  2005-12-13 20:12 ` Luck, Tony
                   ` (104 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2005-12-12 18:20 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

Last few fixes for ia64 for 2.6.15.  Please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/configs/sn2_defconfig        |  152 +++++++++++++++++++++++---------
 arch/ia64/configs/tiger_defconfig      |   74 ++++++++++-----
 arch/ia64/ia32/binfmt_elf32.c          |    2 
 arch/ia64/ia32/ia32priv.h              |    1 
 arch/ia64/kernel/process.c             |    5 -
 arch/ia64/kernel/salinfo.c             |    2 
 arch/ia64/mm/discontig.c               |    4 
 arch/ia64/sn/kernel/io_init.c          |  153 ++++++++++++++++++++++++++++-----
 arch/ia64/sn/kernel/sn2/ptc_deadlock.S |    8 +
 include/asm-ia64/ia32.h                |    2 
 include/asm-ia64/local.h               |    4 
 include/asm-ia64/sn/pcidev.h           |   20 +++-
 include/asm-ia64/spinlock.h            |   12 ++
 13 files changed, 336 insertions(+), 103 deletions(-)

Christoph Lameter:
      [IA64] Fix missing parameter for local_add/sub

Jack Steiner:
      [IA64] Limit the maximum NODEDATA_ALIGN() offset
      [IA64-SGI] Fix SN PTC deadlock recovery

John Keller:
      [IA64-SGI] altix: pci_window fixup

Keith Owens:
      [IA64] Allow salinfo_decode to detect signals on read
      [IA64] Define an ia64 version of __raw_read_trylock

Robin Holt:
      [IA64] Updates to the sn2_defconfig for 2.6.15.
      [IA64] Change SET_PERSONALITY to comply with comment in binfmt_elf.c.

Tony Luck:
      [IA64] refresh tiger_defconfig ready for 2.6.15

Full "git whatchanged -p" output follows:

diff-tree bf7ececa9b68f4720f1ce344f442435660bcdae7 (from f64fa6772aa874e5cad02a9d87e6b0d99ced3d48)
Author: Keith Owens <kaos@sgi.com>
Date:   Sat Dec 10 14:24:28 2005 +1100

    [IA64] Define an ia64 version of __raw_read_trylock
    
    IA64 is using the generic version of __raw_read_trylock, which always
    waits for the lock to be free instead of returning when the lock is in
    use.  Define an ia64 version of __raw_read_trylock which behaves
    correctly, and drop the generic one.
    
    Signed-off-by: Keith Owens <kaos@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/include/asm-ia64/spinlock.h b/include/asm-ia64/spinlock.h
index 5b78611..0c91a76 100644
--- a/include/asm-ia64/spinlock.h
+++ b/include/asm-ia64/spinlock.h
@@ -201,6 +201,16 @@ static inline void __raw_write_unlock(ra
 
 #endif /* !ASM_SUPPORTED */
 
-#define __raw_read_trylock(lock) generic__raw_read_trylock(lock)
+static inline int __raw_read_trylock(raw_rwlock_t *x)
+{
+	union {
+		raw_rwlock_t lock;
+		__u32 word;
+	} old, new;
+	old.lock = new.lock = *x;
+	old.lock.write_lock = new.lock.write_lock = 0;
+	++new.lock.read_counter;
+	return (u32)ia64_cmpxchg4_acq((__u32 *)(x), new.word, old.word) = old.word;
+}
 
 #endif /*  _ASM_IA64_SPINLOCK_H */

diff-tree f64fa6772aa874e5cad02a9d87e6b0d99ced3d48 (from 590711b7dd731bb04e7892c0451566d788985e79)
Author: Christoph Lameter <clameter@engr.sgi.com>
Date:   Wed Dec 7 11:24:42 2005 -0800

    [IA64] Fix missing parameter for local_add/sub
    
    Local add/sub macros need to have a parameter to specify
    the addend/subtrahend respectively.
    
    Signed-off-by: Christoph Lameter <clameter@sgi.org>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/include/asm-ia64/local.h b/include/asm-ia64/local.h
index 1dbd584..dc51909 100644
--- a/include/asm-ia64/local.h
+++ b/include/asm-ia64/local.h
@@ -17,8 +17,8 @@ typedef struct {
 #define local_set(l, i)	atomic64_set(&(l)->val, i)
 #define local_inc(l)	atomic64_inc(&(l)->val)
 #define local_dec(l)	atomic64_dec(&(l)->val)
-#define local_add(l)	atomic64_add(&(l)->val)
-#define local_sub(l)	atomic64_sub(&(l)->val)
+#define local_add(i, l)	atomic64_add((i), &(l)->val)
+#define local_sub(i, l)	atomic64_sub((i), &(l)->val)
 
 /* Non-atomic variants, i.e., preemption disabled and won't be touched in interrupt, etc.  */
 

diff-tree 590711b7dd731bb04e7892c0451566d788985e79 (from bd1d6e2451f2bb0132416fda4d129c4f57a827bc)
Author: Jack Steiner <steiner@sgi.com>
Date:   Tue Dec 6 08:05:24 2005 -0600

    [IA64-SGI] Fix SN PTC deadlock recovery
    
    The patch that added support for a new platform chipset (shub2) broke
    PTC deadlock recovery on older versions of the chipset. (PTCs are the
    SN platform-specific method for doing a global TLB purge). This
    patch fixes deadlock recovery so that it works on both the old & new
    chipsets.
    
    Signed-off-by: Jack Steiner <steiner@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/sn/kernel/sn2/ptc_deadlock.S b/arch/ia64/sn/kernel/sn2/ptc_deadlock.S
index 3fa9506..bebbcc4 100644
--- a/arch/ia64/sn/kernel/sn2/ptc_deadlock.S
+++ b/arch/ia64/sn/kernel/sn2/ptc_deadlock.S
@@ -39,9 +39,13 @@ sn2_ptc_deadlock_recovery_core:
 	mov	r8=r0
 
 1:
+	cmp.ne  p8,p9=r0,ptc1		// Test for shub type (ptc1 non-null on shub1)
+					// p8 = 1 if shub1, p9 = 1 if shub2
+
 	add	scr2=ALIAS_OFFSET,piowc	// Address of WRITE_STATUS alias register 
-	;;
-	ld8.acq	scr1=[scr2];;
+	mov	scr1=7;;		// Clear DEADLOCK, WRITE_ERROR, MULTI_WRITE_ERROR
+(p8)	st8.rel	[scr2]=scr1;;
+(p9)	ld8.acq	scr1=[scr2];;
 
 5:	ld8.acq	scr1=[piowc];;		// Wait for PIOs to complete.
 	hint	@pause

diff-tree bd1d6e2451f2bb0132416fda4d129c4f57a827bc (from acb7f67280128a9ddaa756ff10212391d28caec4)
Author: Robin Holt <holt@sgi.com>
Date:   Mon Dec 5 20:02:31 2005 -0600

    [IA64] Change SET_PERSONALITY to comply with comment in binfmt_elf.c.
    
    We have a customer application which trips a bug.  The problem arises
    when a driver attempts to call do_munmap on an area which is mapped, but
    because current->thread.task_size has been set to 0xC0000000, the call
    to do_munmap fails thinking it is an unmap beyond the user's address
    space.
    
    The comment in fs/binfmt_elf.c in load_elf_library() before the call
    to SET_PERSONALITY() indicates that task_size must not be changed for
    the running application until flush_thread, but is for ia64 executing
    ia32 binaries.
    
    This patch moves the setting of task_size from SET_PERSONALITY() to
    flush_thread() as indicated.  The customer application no longer is able
    to trip the bug.
    
    Signed-off-by: Robin Holt <holt@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/ia32/binfmt_elf32.c b/arch/ia64/ia32/binfmt_elf32.c
index a7280d9..4e7a6a1 100644
--- a/arch/ia64/ia32/binfmt_elf32.c
+++ b/arch/ia64/ia32/binfmt_elf32.c
@@ -261,8 +261,6 @@ elf32_set_personality (void)
 {
 	set_personality(PER_LINUX32);
 	current->thread.map_base  = IA32_PAGE_OFFSET/3;
-	current->thread.task_size = IA32_PAGE_OFFSET;	/* use what Linux/x86 uses... */
-	set_fs(USER_DS);				/* set addr limit for new TASK_SIZE */
 }
 
 static unsigned long
diff --git a/arch/ia64/ia32/ia32priv.h b/arch/ia64/ia32/ia32priv.h
index e3e9290..68ceb4e 100644
--- a/arch/ia64/ia32/ia32priv.h
+++ b/arch/ia64/ia32/ia32priv.h
@@ -305,7 +305,6 @@ struct old_linux32_dirent {
 #define ELF_DATA	ELFDATA2LSB
 #define ELF_ARCH	EM_386
 
-#define IA32_PAGE_OFFSET	0xc0000000
 #define IA32_STACK_TOP		IA32_PAGE_OFFSET
 #define IA32_GATE_OFFSET	IA32_PAGE_OFFSET
 #define IA32_GATE_END		IA32_PAGE_OFFSET + PAGE_SIZE
diff --git a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c
index 2e33665..a4da715 100644
--- a/arch/ia64/kernel/process.c
+++ b/arch/ia64/kernel/process.c
@@ -721,8 +721,11 @@ flush_thread (void)
 	/* drop floating-point and debug-register state if it exists: */
 	current->thread.flags &= ~(IA64_THREAD_FPH_VALID | IA64_THREAD_DBG_VALID);
 	ia64_drop_fpu(current);
-	if (IS_IA32_PROCESS(ia64_task_regs(current)))
+	if (IS_IA32_PROCESS(ia64_task_regs(current))) {
 		ia32_drop_partial_page_list(current);
+		current->thread.task_size = IA32_PAGE_OFFSET;
+		set_fs(USER_DS);
+	}
 }
 
 /*
diff --git a/include/asm-ia64/ia32.h b/include/asm-ia64/ia32.h
index 8e746b2..f8044a1 100644
--- a/include/asm-ia64/ia32.h
+++ b/include/asm-ia64/ia32.h
@@ -13,6 +13,8 @@
 
 # ifdef CONFIG_IA32_SUPPORT
 
+#define IA32_PAGE_OFFSET	0xc0000000
+
 extern void ia32_cpu_init (void);
 extern void ia32_mem_init (void);
 extern void ia32_gdt_init (void);

diff-tree acb7f67280128a9ddaa756ff10212391d28caec4 (from 3ec829b6895092b0686254c315f42642b4a07efc)
Author: Jack Steiner <steiner@sgi.com>
Date:   Mon Dec 5 13:56:50 2005 -0600

    [IA64] Limit the maximum NODEDATA_ALIGN() offset
    
    The per-node data structures are allocated with strided offsets that are a
    function of the node number. This prevents excessive cache-aliasing from
    occurring.
    
    On systems with a large number of nodes, the strided offset becomes
    too large. This patch restricts the maximum offset to 32MB. This is far larger
    than the size of any current L3 cache.
    
    Signed-off-by: Jack Steiner <steiner@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c
index 0f776b0..c87d6d1 100644
--- a/arch/ia64/mm/discontig.c
+++ b/arch/ia64/mm/discontig.c
@@ -50,8 +50,10 @@ static nodemask_t memory_less_mask __ini
  * To prevent cache aliasing effects, align per-node structures so that they
  * start at addresses that are strided by node number.
  */
+#define MAX_NODE_ALIGN_OFFSET	(32 * 1024 * 1024)
 #define NODEDATA_ALIGN(addr, node)						\
-	((((addr) + 1024*1024-1) & ~(1024*1024-1)) + (node)*PERCPU_PAGE_SIZE)
+	((((addr) + 1024*1024-1) & ~(1024*1024-1)) + 				\
+	     (((node)*PERCPU_PAGE_SIZE) & (MAX_NODE_ALIGN_OFFSET - 1)))
 
 /**
  * build_node_maps - callback to setup bootmem structs for each node

diff-tree 3ec829b6895092b0686254c315f42642b4a07efc (from 3e356b2660eda9da7776144cbc0a038c93dcb335)
Author: John Keller <jpk@sgi.com>
Date:   Tue Nov 29 16:36:32 2005 -0600

    [IA64-SGI] altix: pci_window fixup
    
    Altix only patch to add fixup code that sets up
    pci_controller->window. This code is a temporary
    fix until ACPI support on Altix is added.
    
    Also, corrects the usage of pci_dev->sysdata,
    which had previously been used to reference
    platform specific device info, to now point to
    a pci_controller struct.
    
    Signed-off-by: John Keller <jpk@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/sn/kernel/io_init.c b/arch/ia64/sn/kernel/io_init.c
index 05e4ea8..318087e 100644
--- a/arch/ia64/sn/kernel/io_init.c
+++ b/arch/ia64/sn/kernel/io_init.c
@@ -3,7 +3,7 @@
  * License.  See the file "COPYING" in the main directory of this archive
  * for more details.
  *
- * Copyright (C) 1992 - 1997, 2000-2004 Silicon Graphics, Inc. All rights reserved.
+ * Copyright (C) 1992 - 1997, 2000-2005 Silicon Graphics, Inc. All rights reserved.
  */
 
 #include <linux/bootmem.h>
@@ -147,6 +147,24 @@ sal_get_pcidev_info(u64 segment, u64 bus
 }
 
 /*
+ * sn_pcidev_info_get() - Retrieve the pcidev_info struct for the specified
+ *			  device.
+ */
+inline struct pcidev_info *
+sn_pcidev_info_get(struct pci_dev *dev)
+{
+	struct pcidev_info *pcidev;
+
+	list_for_each_entry(pcidev,
+			    &(SN_PCI_CONTROLLER(dev)->pcidev_info), pdi_list) {
+		if (pcidev->pdi_linux_pcidev = dev) {
+			return pcidev;
+		}
+	}
+	return NULL;
+}
+
+/*
  * sn_fixup_ionodes() - This routine initializes the HUB data strcuture for 
  *	each node in the system.
  */
@@ -229,6 +247,50 @@ static void sn_fixup_ionodes(void)
 
 }
 
+/*
+ * sn_pci_window_fixup() - Create a pci_window for each device resource.
+ *			   Until ACPI support is added, we need this code
+ *			   to setup pci_windows for use by
+ *			   pcibios_bus_to_resource(),
+ *			   pcibios_resource_to_bus(), etc.
+ */
+static void
+sn_pci_window_fixup(struct pci_dev *dev, unsigned int count,
+		    int64_t * pci_addrs)
+{
+	struct pci_controller *controller = PCI_CONTROLLER(dev->bus);
+	unsigned int i;
+	unsigned int idx;
+	unsigned int new_count;
+	struct pci_window *new_window;
+
+	if (count = 0)
+		return;
+	idx = controller->windows;
+	new_count = controller->windows + count;
+	new_window = kcalloc(new_count, sizeof(struct pci_window), GFP_KERNEL);
+	if (new_window = NULL)
+		BUG();
+	if (controller->window) {
+		memcpy(new_window, controller->window,
+		       sizeof(struct pci_window) * controller->windows);
+		kfree(controller->window);
+	}
+
+	/* Setup a pci_window for each device resource. */
+	for (i = 0; i <= PCI_ROM_RESOURCE; i++) {
+		if (pci_addrs[i] = -1)
+			continue;
+
+		new_window[idx].offset = dev->resource[i].start - pci_addrs[i];
+		new_window[idx].resource = dev->resource[i];
+		idx++;
+	}
+
+	controller->windows = new_count;
+	controller->window = new_window;
+}
+
 void sn_pci_unfixup_slot(struct pci_dev *dev)
 {
 	struct pci_dev *host_pci_dev = SN_PCIDEV_INFO(dev)->host_pci_dev;
@@ -246,21 +308,23 @@ void sn_pci_unfixup_slot(struct pci_dev 
  */
 void sn_pci_fixup_slot(struct pci_dev *dev)
 {
+	unsigned int count = 0;
 	int idx;
 	int segment = pci_domain_nr(dev->bus);
 	int status = 0;
 	struct pcibus_bussoft *bs;
  	struct pci_bus *host_pci_bus;
  	struct pci_dev *host_pci_dev;
+	struct pcidev_info *pcidev_info;
+	int64_t pci_addrs[PCI_ROM_RESOURCE + 1];
  	struct sn_irq_info *sn_irq_info;
  	unsigned long size;
  	unsigned int bus_no, devfn;
 
 	pci_dev_get(dev); /* for the sysdata pointer */
-	dev->sysdata = kmalloc(sizeof(struct pcidev_info), GFP_KERNEL);
-	if (SN_PCIDEV_INFO(dev) <= 0)
+	pcidev_info = kzalloc(sizeof(struct pcidev_info), GFP_KERNEL);
+	if (pcidev_info <= 0)
 		BUG();		/* Cannot afford to run out of memory */
-	memset(SN_PCIDEV_INFO(dev), 0, sizeof(struct pcidev_info));
 
 	sn_irq_info = kmalloc(sizeof(struct sn_irq_info), GFP_KERNEL);
 	if (sn_irq_info <= 0)
@@ -270,22 +334,34 @@ void sn_pci_fixup_slot(struct pci_dev *d
 	/* Call to retrieve pci device information needed by kernel. */
 	status = sal_get_pcidev_info((u64) segment, (u64) dev->bus->number, 
 				     dev->devfn,
-				     (u64) __pa(SN_PCIDEV_INFO(dev)),
+				     (u64) __pa(pcidev_info),
 				     (u64) __pa(sn_irq_info));
 	if (status)
 		BUG(); /* Cannot get platform pci device information */
 
+	/* Add pcidev_info to list in sn_pci_controller struct */
+	list_add_tail(&pcidev_info->pdi_list,
+		      &(SN_PCI_CONTROLLER(dev->bus)->pcidev_info));
+
 	/* Copy over PIO Mapped Addresses */
 	for (idx = 0; idx <= PCI_ROM_RESOURCE; idx++) {
 		unsigned long start, end, addr;
 
-		if (!SN_PCIDEV_INFO(dev)->pdi_pio_mapped_addr[idx])
+		if (!pcidev_info->pdi_pio_mapped_addr[idx]) {
+			pci_addrs[idx] = -1;
 			continue;
+		}
 
 		start = dev->resource[idx].start;
 		end = dev->resource[idx].end;
 		size = end - start;
-		addr = SN_PCIDEV_INFO(dev)->pdi_pio_mapped_addr[idx];
+		if (size = 0) {
+			pci_addrs[idx] = -1;
+			continue;
+		}
+		pci_addrs[idx] = start;
+		count++;
+		addr = pcidev_info->pdi_pio_mapped_addr[idx];
 		addr = ((addr << 4) >> 4) | __IA64_UNCACHED_OFFSET;
 		dev->resource[idx].start = addr;
 		dev->resource[idx].end = addr + size;
@@ -294,23 +370,27 @@ void sn_pci_fixup_slot(struct pci_dev *d
 		else
 			dev->resource[idx].parent = &iomem_resource;
 	}
+	/* Create a pci_window in the pci_controller struct for
+	 * each device resource.
+	 */
+	if (count > 0)
+		sn_pci_window_fixup(dev, count, pci_addrs);
 
 	/*
 	 * Using the PROMs values for the PCI host bus, get the Linux
  	 * PCI host_pci_dev struct and set up host bus linkages
  	 */
 
- 	bus_no = (SN_PCIDEV_INFO(dev)->pdi_slot_host_handle >> 32) & 0xff;
- 	devfn = SN_PCIDEV_INFO(dev)->pdi_slot_host_handle & 0xffffffff;
+	bus_no = (pcidev_info->pdi_slot_host_handle >> 32) & 0xff;
+	devfn = pcidev_info->pdi_slot_host_handle & 0xffffffff;
  	host_pci_bus = pci_find_bus(segment, bus_no);
  	host_pci_dev = pci_get_slot(host_pci_bus, devfn);
 
-	SN_PCIDEV_INFO(dev)->host_pci_dev = host_pci_dev;
-	SN_PCIDEV_INFO(dev)->pdi_host_pcidev_info -	    					SN_PCIDEV_INFO(host_pci_dev);
-	SN_PCIDEV_INFO(dev)->pdi_linux_pcidev = dev;
+	pcidev_info->host_pci_dev = host_pci_dev;
+	pcidev_info->pdi_linux_pcidev = dev;
+	pcidev_info->pdi_host_pcidev_info = SN_PCIDEV_INFO(host_pci_dev);
 	bs = SN_PCIBUS_BUSSOFT(dev->bus);
-	SN_PCIDEV_INFO(dev)->pdi_pcibus_info = bs;
+	pcidev_info->pdi_pcibus_info = bs;
 
 	if (bs && bs->bs_asic_type < PCIIO_ASIC_MAX_TYPES) {
 		SN_PCIDEV_BUSPROVIDER(dev) = sn_pci_provider[bs->bs_asic_type];
@@ -320,11 +400,11 @@ void sn_pci_fixup_slot(struct pci_dev *d
 
 	/* Only set up IRQ stuff if this device has a host bus context */
 	if (bs && sn_irq_info->irq_irq) {
-		SN_PCIDEV_INFO(dev)->pdi_sn_irq_info = sn_irq_info;
-		dev->irq = SN_PCIDEV_INFO(dev)->pdi_sn_irq_info->irq_irq;
+		pcidev_info->pdi_sn_irq_info = sn_irq_info;
+		dev->irq = pcidev_info->pdi_sn_irq_info->irq_irq;
 		sn_irq_fixup(dev, sn_irq_info);
 	} else {
-		SN_PCIDEV_INFO(dev)->pdi_sn_irq_info = NULL;
+		pcidev_info->pdi_sn_irq_info = NULL;
 		kfree(sn_irq_info);
 	}
 }
@@ -338,6 +418,7 @@ void sn_pci_controller_fixup(int segment
 	int status = 0;
 	int nasid, cnode;
 	struct pci_controller *controller;
+	struct sn_pci_controller *sn_controller;
 	struct pcibus_bussoft *prom_bussoft_ptr;
 	struct hubdev_info *hubdev_info;
 	void *provider_soft = NULL;
@@ -349,10 +430,15 @@ void sn_pci_controller_fixup(int segment
 		return;		/*bus # does not exist */
 	prom_bussoft_ptr = __va(prom_bussoft_ptr);
 
- 	controller = kzalloc(sizeof(struct pci_controller), GFP_KERNEL);
+	/* Allocate a sn_pci_controller, which has a pci_controller struct
+	 * as the first member.
+	 */
+	sn_controller = kzalloc(sizeof(struct sn_pci_controller), GFP_KERNEL);
+	if (!sn_controller)
+		BUG();
+	INIT_LIST_HEAD(&sn_controller->pcidev_info);
+	controller = &sn_controller->pci_controller;
 	controller->segment = segment;
- 	if (!controller)
- 		BUG();
 
 	if (bus = NULL) {
  		bus = pci_scan_bus(busnum, &pci_root_ops, controller);
@@ -390,6 +476,29 @@ void sn_pci_controller_fixup(int segment
 	}
 
 	/*
+	 * Setup pci_windows for legacy IO and MEM space.
+	 * (Temporary until ACPI support is in place.)
+	 */
+	controller->window = kcalloc(2, sizeof(struct pci_window), GFP_KERNEL);
+	if (controller->window = NULL)
+		BUG();
+	controller->window[0].offset = prom_bussoft_ptr->bs_legacy_io;
+	controller->window[0].resource.name = "legacy_io";
+	controller->window[0].resource.flags = IORESOURCE_IO;
+	controller->window[0].resource.start = prom_bussoft_ptr->bs_legacy_io;
+	controller->window[0].resource.end +	    controller->window[0].resource.start + 0xffff;
+	controller->window[0].resource.parent = &ioport_resource;
+	controller->window[1].offset = prom_bussoft_ptr->bs_legacy_mem;
+	controller->window[1].resource.name = "legacy_mem";
+	controller->window[1].resource.flags = IORESOURCE_MEM;
+	controller->window[1].resource.start = prom_bussoft_ptr->bs_legacy_mem;
+	controller->window[1].resource.end +	    controller->window[1].resource.start + (1024 * 1024) - 1;
+	controller->window[1].resource.parent = &iomem_resource;
+	controller->windows = 2;
+
+	/*
 	 * Generic bus fixup goes here.  Don't reference prom_bussoft_ptr
 	 * after this point.
 	 */
@@ -421,7 +530,7 @@ void sn_pci_controller_fixup(int segment
 
 error_return:
 
-	kfree(controller);
+	kfree(sn_controller);
 	return;
 }
 
@@ -434,7 +543,7 @@ void sn_bus_store_sysdata(struct pci_dev
 		dev_dbg(dev, "%s: out of memory!\n", __FUNCTION__);
 		return;
 	}
-	element->sysdata = dev->sysdata;
+	element->sysdata = SN_PCIDEV_INFO(dev);
 	list_add(&element->entry, &sn_sysdata_list);
 }
 
diff --git a/include/asm-ia64/sn/pcidev.h b/include/asm-ia64/sn/pcidev.h
index 49711d0..f65d222 100644
--- a/include/asm-ia64/sn/pcidev.h
+++ b/include/asm-ia64/sn/pcidev.h
@@ -3,15 +3,27 @@
  * License.  See the file "COPYING" in the main directory of this archive
  * for more details.
  *
- * Copyright (C) 1992 - 1997, 2000-2004 Silicon Graphics, Inc. All rights reserved.
+ * Copyright (C) 1992 - 1997, 2000-2005 Silicon Graphics, Inc. All rights reserved.
  */
 #ifndef _ASM_IA64_SN_PCI_PCIDEV_H
 #define _ASM_IA64_SN_PCI_PCIDEV_H
 
 #include <linux/pci.h>
 
-#define SN_PCIDEV_INFO(pci_dev) \
-        ((struct pcidev_info *)(pci_dev)->sysdata)
+/*
+ * In ia64, pci_dev->sysdata must be a *pci_controller. To provide access to
+ * the pcidev_info structs for all devices under a controller, we extend the
+ * definition of pci_controller, via sn_pci_controller, to include a list
+ * of pcidev_info.
+ */
+struct sn_pci_controller {
+	struct pci_controller pci_controller;
+	struct list_head pcidev_info;
+};
+
+#define SN_PCI_CONTROLLER(dev) ((struct sn_pci_controller *) dev->sysdata)
+
+#define SN_PCIDEV_INFO(dev)	sn_pcidev_info_get(dev)
 
 #define SN_PCIBUS_BUSSOFT_INFO(pci_bus) \
 	(struct pcibus_info *)((struct pcibus_bussoft *)(PCI_CONTROLLER((pci_bus))->platform_data))
@@ -53,11 +65,13 @@ struct pcidev_info {
 	struct sn_irq_info	*pdi_sn_irq_info;
 	struct sn_pcibus_provider *pdi_provider;	/* sn pci ops */
 	struct pci_dev 		*host_pci_dev;		/* host bus link */
+	struct list_head	pdi_list;		/* List of pcidev_info */
 };
 
 extern void sn_irq_fixup(struct pci_dev *pci_dev,
 			 struct sn_irq_info *sn_irq_info);
 extern void sn_irq_unfixup(struct pci_dev *pci_dev);
+extern struct pcidev_info * sn_pcidev_info_get(struct pci_dev *);
 extern void sn_pci_controller_fixup(int segment, int busnum,
  				    struct pci_bus *bus);
 extern void sn_bus_store_sysdata(struct pci_dev *dev);

diff-tree 05f70395c642bed0300bc1955bfa8c0f93de2bc2 (from 885da19e8044051a92cfd70099398c373245c431)
Author: Keith Owens <kaos@sgi.com>
Date:   Fri Dec 2 13:40:15 2005 +1100

    [IA64] Allow salinfo_decode to detect signals on read
    
    Return -EINTR instead of -ERESTARTSYS when signals are delivered during
    a blocked read of /proc/sal/*/event.  This allows salinfo_decode to
    detect signals when it is blocked on a read of those files.
    
    Signed-off-by: Keith Owens <kaos@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/salinfo.c b/arch/ia64/kernel/salinfo.c
index ca68e6e..1461dc6 100644
--- a/arch/ia64/kernel/salinfo.c
+++ b/arch/ia64/kernel/salinfo.c
@@ -293,7 +293,7 @@ retry:
 		if (file->f_flags & O_NONBLOCK)
 			return -EAGAIN;
 		if (down_interruptible(&data->sem))
-			return -ERESTARTSYS;
+			return -EINTR;
 	}
 
 	n = data->cpu_check;

diff-tree 885da19e8044051a92cfd70099398c373245c431 (from 1448652a54b5de5189a217374706700275b857e6)
Author: Tony Luck <tony.luck@intel.com>
Date:   Fri Dec 2 16:18:42 2005 -0800

    [IA64] refresh tiger_defconfig ready for 2.6.15
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/configs/tiger_defconfig b/arch/ia64/configs/tiger_defconfig
index 9bc8bca..b1e8f09 100644
--- a/arch/ia64/configs/tiger_defconfig
+++ b/arch/ia64/configs/tiger_defconfig
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.14-rc1
-# Wed Sep 14 15:17:57 2005
+# Linux kernel version: 2.6.15-rc4
+# Fri Dec  2 16:06:32 2005
 #
 
 #
@@ -59,17 +59,36 @@ CONFIG_KMOD=y
 CONFIG_STOP_MACHINE=y
 
 #
+# Block layer
+#
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
 # Processor type and features
 #
 CONFIG_IA64=y
 CONFIG_64BIT=y
 CONFIG_MMU=y
+CONFIG_SWIOTLB=y
 CONFIG_RWSEM_XCHGADD_ALGORITHM=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
 CONFIG_TIME_INTERPOLATION=y
 CONFIG_EFI=y
 CONFIG_GENERIC_IOMAP=y
 CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
+CONFIG_ZONE_DMA_IS_DMA32=y
 # CONFIG_IA64_GENERIC is not set
 CONFIG_IA64_DIG=y
 # CONFIG_IA64_HP_ZX1 is not set
@@ -82,18 +101,16 @@ CONFIG_MCKINLEY=y
 # CONFIG_IA64_PAGE_SIZE_8KB is not set
 CONFIG_IA64_PAGE_SIZE_16KB=y
 # CONFIG_IA64_PAGE_SIZE_64KB is not set
+CONFIG_PGTABLE_3=y
+# CONFIG_PGTABLE_4 is not set
 # CONFIG_HZ_100 is not set
 CONFIG_HZ_250=y
 # CONFIG_HZ_1000 is not set
 CONFIG_HZ%0
 CONFIG_IA64_L1_CACHE_SHIFT=7
-# CONFIG_NUMA is not set
-CONFIG_VIRTUAL_MEM_MAP=y
-CONFIG_HOLES_IN_ZONE=y
 CONFIG_IA64_CYCLONE=y
 CONFIG_IOSAPIC=y
-# CONFIG_IA64_SGI_SN_XP is not set
-CONFIG_FORCE_MAX_ZONEORDER\x18
+CONFIG_FORCE_MAX_ZONEORDER\x17
 CONFIG_SMP=y
 CONFIG_NR_CPUS=4
 CONFIG_HOTPLUG_CPU=y
@@ -106,7 +123,13 @@ CONFIG_FLATMEM_MANUAL=y
 CONFIG_FLATMEM=y
 CONFIG_FLAT_NODE_MEM_MAP=y
 # CONFIG_SPARSEMEM_STATIC is not set
-CONFIG_HAVE_DEC_LOCK=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_VIRTUAL_MEM_MAP=y
+CONFIG_HOLES_IN_ZONE=y
 CONFIG_IA32_SUPPORT=y
 CONFIG_COMPAT=y
 CONFIG_IA64_MCA_RECOVERY=y
@@ -118,7 +141,6 @@ CONFIG_IA64_PALINFO=y
 #
 CONFIG_EFI_VARS=y
 CONFIG_EFI_PCDP=y
-# CONFIG_DELL_RBU is not set
 CONFIG_BINFMT_ELF=y
 CONFIG_BINFMT_MISC=m
 
@@ -126,6 +148,7 @@ CONFIG_BINFMT_MISC=m
 # Power management and ACPI
 #
 CONFIG_PM=y
+CONFIG_PM_LEGACY=y
 # CONFIG_PM_DEBUG is not set
 
 #
@@ -226,14 +249,16 @@ CONFIG_TCP_CONG_BIC=y
 # CONFIG_NET_DIVERT is not set
 # CONFIG_ECONET is not set
 # CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
 # CONFIG_NET_SCHED is not set
-# CONFIG_NET_CLS_ROUTE is not set
 
 #
 # Network testing
 #
 # CONFIG_NET_PKTGEN is not set
-# CONFIG_NETFILTER_NETLINK is not set
 # CONFIG_HAMRADIO is not set
 # CONFIG_IRDA is not set
 # CONFIG_BT is not set
@@ -295,14 +320,6 @@ CONFIG_BLK_DEV_RAM_COUNT\x16
 CONFIG_BLK_DEV_RAM_SIZE@96
 CONFIG_BLK_DEV_INITRD=y
 # CONFIG_CDROM_PKTCDVD is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
 # CONFIG_ATA_OVER_ETH is not set
 
 #
@@ -400,6 +417,7 @@ CONFIG_SCSI_FC_ATTRS=y
 #
 # SCSI low-level drivers
 #
+# CONFIG_ISCSI_TCP is not set
 # CONFIG_BLK_DEV_3W_XXXX_RAID is not set
 # CONFIG_SCSI_3W_9XXX is not set
 # CONFIG_SCSI_ACARD is not set
@@ -409,6 +427,7 @@ CONFIG_SCSI_FC_ATTRS=y
 # CONFIG_SCSI_AIC79XX is not set
 # CONFIG_MEGARAID_NEWGEN is not set
 # CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
 # CONFIG_SCSI_SATA is not set
 # CONFIG_SCSI_DMX3191D is not set
 # CONFIG_SCSI_FUTURE_DOMAIN is not set
@@ -424,7 +443,6 @@ CONFIG_SCSI_SYM53C8XX_MAX_TAGSd
 CONFIG_SCSI_QLOGIC_FC=y
 # CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set
 CONFIG_SCSI_QLOGIC_1280=y
-# CONFIG_SCSI_QLOGIC_1280_1040 is not set
 CONFIG_SCSI_QLA2XXX=y
 CONFIG_SCSI_QLA21XX=m
 CONFIG_SCSI_QLA22XX=m
@@ -463,6 +481,7 @@ CONFIG_DM_ZERO=m
 CONFIG_FUSION=y
 CONFIG_FUSION_SPI=y
 CONFIG_FUSION_FC=y
+# CONFIG_FUSION_SAS is not set
 CONFIG_FUSION_MAX_SGE\x128
 CONFIG_FUSION_CTL=y
 
@@ -503,6 +522,7 @@ CONFIG_NET_ETHERNET=y
 CONFIG_MII=m
 # CONFIG_HAPPYMEAL is not set
 # CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
 # CONFIG_NET_VENDOR_3COM is not set
 
 #
@@ -727,6 +747,7 @@ CONFIG_MAX_RAW_DEVS%6
 # TPM devices
 #
 # CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
 
 #
 # I2C support
@@ -812,12 +833,15 @@ CONFIG_USB_UHCI_HCD=y
 #
 # 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
+# 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
@@ -1123,9 +1147,10 @@ CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_GENERIC_PENDING_IRQ=y
 
 #
-# Profiling support
+# Instrumentation Support
 #
 # CONFIG_PROFILING is not set
+# CONFIG_KPROBES is not set
 
 #
 # Kernel hacking
@@ -1142,7 +1167,8 @@ CONFIG_DETECT_SOFTLOCKUP=y
 # CONFIG_DEBUG_KOBJECT is not set
 # CONFIG_DEBUG_INFO is not set
 # CONFIG_DEBUG_FS is not set
-# CONFIG_KPROBES is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_RCU_TORTURE_TEST is not set
 CONFIG_IA64_GRANULE_16MB=y
 # CONFIG_IA64_GRANULE_64MB is not set
 # CONFIG_IA64_PRINT_HAZARDS is not set

diff-tree 1448652a54b5de5189a217374706700275b857e6 (from deda498710e190c7922c2634ed630ee64ce86c05)
Author: Robin Holt <holt@sgi.com>
Date:   Fri Dec 2 11:14:41 2005 -0600

    [IA64] Updates to the sn2_defconfig for 2.6.15.
    
    This updates the sn2_defconfig file for the Altix 330 hardware, enables
    the AGP graphics for the SGI Prism, and removes prompts for the remainder
    of the new features.  Greg Edwards reviewed the changes.
    
    Signed-off-by: Robin Holt <holt@sgi.com>
    Signed-off-by: Greg Edwards <edwardsg@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/configs/sn2_defconfig b/arch/ia64/configs/sn2_defconfig
index 87cfd31..e1924cc 100644
--- a/arch/ia64/configs/sn2_defconfig
+++ b/arch/ia64/configs/sn2_defconfig
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.13-rc6
-# Tue Aug 16 14:40:41 2005
+# Linux kernel version: 2.6.15-rc4
+# Fri Dec  2 10:33:48 2005
 #
 
 #
@@ -16,6 +16,7 @@ CONFIG_INIT_ENV_ARG_LIMIT2
 # General setup
 #
 CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
 CONFIG_SWAP=y
 CONFIG_SYSVIPC=y
 CONFIG_POSIX_MQUEUE=y
@@ -26,6 +27,7 @@ CONFIG_HOTPLUG=y
 CONFIG_KOBJECT_UEVENT=y
 # CONFIG_IKCONFIG is not set
 CONFIG_CPUSETS=y
+CONFIG_INITRAMFS_SOURCE=""
 # CONFIG_EMBEDDED is not set
 CONFIG_KALLSYMS=y
 CONFIG_KALLSYMS_ALL=y
@@ -56,11 +58,29 @@ CONFIG_KMOD=y
 CONFIG_STOP_MACHINE=y
 
 #
+# Block layer
+#
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
 # Processor type and features
 #
 CONFIG_IA64=y
 CONFIG_64BIT=y
 CONFIG_MMU=y
+CONFIG_SWIOTLB=y
 CONFIG_RWSEM_XCHGADD_ALGORITHM=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
 CONFIG_TIME_INTERPOLATION=y
@@ -68,6 +88,7 @@ CONFIG_EFI=y
 CONFIG_GENERIC_IOMAP=y
 CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
 CONFIG_IA64_UNCACHED_ALLOCATOR=y
+CONFIG_ZONE_DMA_IS_DMA32=y
 # CONFIG_IA64_GENERIC is not set
 # CONFIG_IA64_DIG is not set
 # CONFIG_IA64_HP_ZX1 is not set
@@ -87,14 +108,10 @@ CONFIG_HZ_250=y
 # CONFIG_HZ_1000 is not set
 CONFIG_HZ%0
 CONFIG_IA64_L1_CACHE_SHIFT=7
-CONFIG_NUMA=y
-CONFIG_VIRTUAL_MEM_MAP=y
-CONFIG_HOLES_IN_ZONE=y
-CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
 # CONFIG_IA64_CYCLONE is not set
 CONFIG_IOSAPIC=y
 CONFIG_IA64_SGI_SN_XP=m
-CONFIG_FORCE_MAX_ZONEORDER\x18
+CONFIG_FORCE_MAX_ZONEORDER\x17
 CONFIG_SMP=y
 CONFIG_NR_CPUSQ2
 # CONFIG_HOTPLUG_CPU is not set
@@ -107,7 +124,17 @@ CONFIG_DISCONTIGMEM_MANUAL=y
 CONFIG_DISCONTIGMEM=y
 CONFIG_FLAT_NODE_MEM_MAP=y
 CONFIG_NEED_MULTIPLE_NODES=y
-CONFIG_HAVE_DEC_LOCK=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y
+CONFIG_NUMA=y
+CONFIG_VIRTUAL_MEM_MAP=y
+CONFIG_HOLES_IN_ZONE=y
+CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y
 CONFIG_IA32_SUPPORT=y
 CONFIG_COMPAT=y
 CONFIG_IA64_MCA_RECOVERY=y
@@ -126,28 +153,35 @@ CONFIG_BINFMT_ELF=y
 # Power management and ACPI
 #
 CONFIG_PM=y
-CONFIG_ACPI=y
+# CONFIG_PM_LEGACY is not set
+# CONFIG_PM_DEBUG is not set
 
 #
 # ACPI (Advanced Configuration and Power Interface) Support
 #
+CONFIG_ACPI=y
 # CONFIG_ACPI_BUTTON is not set
 # CONFIG_ACPI_FAN is not set
 # CONFIG_ACPI_PROCESSOR is not set
 CONFIG_ACPI_NUMA=y
+CONFIG_ACPI_BLACKLIST_YEAR=0
 # CONFIG_ACPI_DEBUG is not set
 CONFIG_ACPI_POWER=y
 CONFIG_ACPI_SYSTEM=y
 # CONFIG_ACPI_CONTAINER is not set
 
 #
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
 # Bus options (PCI, PCMCIA)
 #
 CONFIG_PCI=y
 CONFIG_PCI_DOMAINS=y
 # CONFIG_PCI_MSI is not set
 CONFIG_PCI_LEGACY_PROC=y
-CONFIG_PCI_NAMES=y
 # CONFIG_PCI_DEBUG is not set
 
 #
@@ -191,8 +225,8 @@ CONFIG_SYN_COOKIES=y
 # CONFIG_INET_ESP is not set
 # CONFIG_INET_IPCOMP is not set
 # CONFIG_INET_TUNNEL is not set
-CONFIG_IP_TCPDIAG=y
-# CONFIG_IP_TCPDIAG_IPV6 is not set
+CONFIG_INET_DIAG=m
+CONFIG_INET_TCP_DIAG=m
 # CONFIG_TCP_CONG_ADVANCED is not set
 CONFIG_TCP_CONG_BIC=y
 CONFIG_IPV6=m
@@ -205,6 +239,11 @@ CONFIG_IPV6=m
 # CONFIG_NETFILTER is not set
 
 #
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
 # SCTP Configuration (EXPERIMENTAL)
 #
 # CONFIG_IP_SCTP is not set
@@ -220,8 +259,11 @@ CONFIG_IPV6=m
 # CONFIG_NET_DIVERT is not set
 # CONFIG_ECONET is not set
 # CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
 # CONFIG_NET_SCHED is not set
-# CONFIG_NET_CLS_ROUTE is not set
 
 #
 # Network testing
@@ -230,6 +272,7 @@ CONFIG_IPV6=m
 # CONFIG_HAMRADIO is not set
 # CONFIG_IRDA is not set
 # CONFIG_BT is not set
+# CONFIG_IEEE80211 is not set
 
 #
 # Device Drivers
@@ -244,6 +287,11 @@ CONFIG_FW_LOADER=y
 # CONFIG_DEBUG_DRIVER is not set
 
 #
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
 # Memory Technology Devices (MTD)
 #
 # CONFIG_MTD is not set
@@ -275,16 +323,7 @@ CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM_COUNT\x16
 CONFIG_BLK_DEV_RAM_SIZE@96
 CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
 # CONFIG_CDROM_PKTCDVD is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
 CONFIG_ATA_OVER_ETH=m
 
 #
@@ -349,6 +388,7 @@ CONFIG_IDEDMA_AUTO=y
 #
 # SCSI device support
 #
+# CONFIG_RAID_ATTRS is not set
 CONFIG_SCSI=y
 CONFIG_SCSI_PROC_FS=y
 
@@ -375,11 +415,13 @@ CONFIG_SCSI_CONSTANTS=y
 #
 CONFIG_SCSI_SPI_ATTRS=y
 CONFIG_SCSI_FC_ATTRS=y
-# CONFIG_SCSI_ISCSI_ATTRS is not set
+CONFIG_SCSI_ISCSI_ATTRS=m
+CONFIG_SCSI_SAS_ATTRS=y
 
 #
 # SCSI low-level drivers
 #
+CONFIG_ISCSI_TCP=m
 # CONFIG_BLK_DEV_3W_XXXX_RAID is not set
 # CONFIG_SCSI_3W_9XXX is not set
 # CONFIG_SCSI_ACARD is not set
@@ -389,15 +431,19 @@ CONFIG_SCSI_FC_ATTRS=y
 # CONFIG_SCSI_AIC79XX is not set
 # CONFIG_MEGARAID_NEWGEN is not set
 # CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
 CONFIG_SCSI_SATA=y
 # CONFIG_SCSI_SATA_AHCI is not set
 # CONFIG_SCSI_SATA_SVW is not set
 # CONFIG_SCSI_ATA_PIIX is not set
+# CONFIG_SCSI_SATA_MV is not set
 # CONFIG_SCSI_SATA_NV is not set
-# CONFIG_SCSI_SATA_PROMISE is not set
+# CONFIG_SCSI_PDC_ADMA is not set
 # CONFIG_SCSI_SATA_QSTOR is not set
+# CONFIG_SCSI_SATA_PROMISE is not set
 # CONFIG_SCSI_SATA_SX4 is not set
 # CONFIG_SCSI_SATA_SIL is not set
+# CONFIG_SCSI_SATA_SIL24 is not set
 # CONFIG_SCSI_SATA_SIS is not set
 # CONFIG_SCSI_SATA_ULI is not set
 # CONFIG_SCSI_SATA_VIA is not set
@@ -411,7 +457,6 @@ CONFIG_SCSI_SATA_VITESSE=y
 # CONFIG_SCSI_IPR is not set
 # CONFIG_SCSI_QLOGIC_FC is not set
 CONFIG_SCSI_QLOGIC_1280=y
-# CONFIG_SCSI_QLOGIC_1280_1040 is not set
 CONFIG_SCSI_QLA2XXX=y
 # CONFIG_SCSI_QLA21XX is not set
 CONFIG_SCSI_QLA22XX=y
@@ -451,6 +496,7 @@ CONFIG_DM_MULTIPATH_EMC=m
 CONFIG_FUSION=y
 CONFIG_FUSION_SPI=y
 CONFIG_FUSION_FC=y
+CONFIG_FUSION_SAS=y
 CONFIG_FUSION_MAX_SGE\x128
 CONFIG_FUSION_CTL=m
 
@@ -479,6 +525,10 @@ CONFIG_NETDEVICES=y
 # CONFIG_ARCNET is not set
 
 #
+# PHY device support
+#
+
+#
 # Ethernet (10 or 100Mbit)
 #
 # CONFIG_NET_ETHERNET is not set
@@ -493,6 +543,7 @@ CONFIG_NETDEVICES=y
 # 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_TIGON3=y
@@ -501,10 +552,10 @@ CONFIG_TIGON3=y
 #
 # Ethernet (10000 Mbit)
 #
+CONFIG_CHELSIO_T1=m
 # CONFIG_IXGB is not set
 CONFIG_S2IO=m
 # CONFIG_S2IO_NAPI is not set
-# CONFIG_2BUFF_MODE is not set
 
 #
 # Token Ring devices
@@ -583,6 +634,7 @@ CONFIG_HW_CONSOLE=y
 CONFIG_SERIAL_NONSTANDARD=y
 # CONFIG_ROCKETPORT is not set
 # CONFIG_CYCLADES is not set
+# CONFIG_DIGIEPCA is not set
 # CONFIG_MOXA_SMARTIO is not set
 # CONFIG_ISI is not set
 # CONFIG_SYNCLINKMP is not set
@@ -629,7 +681,8 @@ CONFIG_EFI_RTC=y
 #
 # Ftape, the floppy tape device driver
 #
-# CONFIG_AGP is not set
+CONFIG_AGP=y
+CONFIG_AGP_SGI_TIOCA=y
 # CONFIG_DRM is not set
 CONFIG_RAW_DRIVER=m
 # CONFIG_HPET is not set
@@ -641,12 +694,12 @@ CONFIG_MMTIMER=y
 # TPM devices
 #
 # CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
 
 #
 # I2C support
 #
 # CONFIG_I2C is not set
-# CONFIG_I2C_SENSOR is not set
 
 #
 # Dallas's 1-wire bus
@@ -657,12 +710,17 @@ CONFIG_MMTIMER=y
 # Hardware Monitoring support
 #
 # CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
 
 #
 # Misc devices
 #
 
 #
+# Multimedia Capabilities Port drivers
+#
+
+#
 # Multimedia devices
 #
 # CONFIG_VIDEO_DEV is not set
@@ -721,12 +779,15 @@ CONFIG_USB_UHCI_HCD=m
 #
 # 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
+# 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
 
@@ -751,9 +812,11 @@ CONFIG_USB_HIDINPUT=y
 # 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
@@ -824,11 +887,13 @@ CONFIG_USB_MON=y
 # InfiniBand support
 #
 CONFIG_INFINIBAND=m
-CONFIG_INFINIBAND_USER_VERBS=m
+# CONFIG_INFINIBAND_USER_MAD is not set
+CONFIG_INFINIBAND_USER_ACCESS=m
 CONFIG_INFINIBAND_MTHCA=m
 # CONFIG_INFINIBAND_MTHCA_DEBUG is not set
 CONFIG_INFINIBAND_IPOIB=m
 # CONFIG_INFINIBAND_IPOIB_DEBUG is not set
+CONFIG_INFINIBAND_SRP=m
 
 #
 # SN Devices
@@ -858,16 +923,12 @@ CONFIG_REISERFS_FS_POSIX_ACL=y
 CONFIG_REISERFS_FS_SECURITY=y
 # CONFIG_JFS_FS is not set
 CONFIG_FS_POSIX_ACL=y
-
-#
-# XFS support
-#
 CONFIG_XFS_FS=y
 CONFIG_XFS_EXPORT=y
-CONFIG_XFS_RT=y
 CONFIG_XFS_QUOTA=y
 # CONFIG_XFS_SECURITY is not set
 CONFIG_XFS_POSIX_ACL=y
+CONFIG_XFS_RT=y
 # CONFIG_MINIX_FS is not set
 # CONFIG_ROMFS_FS is not set
 CONFIG_INOTIFY=y
@@ -878,6 +939,7 @@ CONFIG_QUOTACTL=y
 CONFIG_DNOTIFY=y
 CONFIG_AUTOFS_FS=m
 CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
 
 #
 # CD-ROM/DVD Filesystems
@@ -904,13 +966,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
 CONFIG_PROC_FS=y
 CONFIG_PROC_KCORE=y
 CONFIG_SYSFS=y
-# CONFIG_DEVPTS_FS_XATTR is not set
 CONFIG_TMPFS=y
-CONFIG_TMPFS_XATTR=y
-CONFIG_TMPFS_SECURITY=y
 CONFIG_HUGETLBFS=y
 CONFIG_HUGETLB_PAGE=y
 CONFIG_RAMFS=y
+CONFIG_RELAYFS_FS=m
 
 #
 # Miscellaneous filesystems
@@ -959,6 +1019,7 @@ CONFIG_CIFS=m
 # CONFIG_NCP_FS is not set
 # CONFIG_CODA_FS is not set
 # CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
 
 #
 # Partition Types
@@ -1028,18 +1089,21 @@ CONFIG_NLS_UTF8=y
 # Library routines
 #
 # CONFIG_CRC_CCITT is not set
+CONFIG_CRC16=m
 CONFIG_CRC32=y
-# CONFIG_LIBCRC32C is not set
+CONFIG_LIBCRC32C=m
 CONFIG_ZLIB_INFLATE=m
 CONFIG_ZLIB_DEFLATE=m
 CONFIG_GENERIC_ALLOCATOR=y
 CONFIG_GENERIC_HARDIRQS=y
 CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_PENDING_IRQ=y
 
 #
-# Profiling support
+# Instrumentation Support
 #
 # CONFIG_PROFILING is not set
+# CONFIG_KPROBES is not set
 
 #
 # Kernel hacking
@@ -1048,6 +1112,7 @@ CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_DEBUG_KERNEL=y
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_LOG_BUF_SHIFT 
+CONFIG_DETECT_SOFTLOCKUP=y
 # CONFIG_SCHEDSTATS is not set
 # CONFIG_DEBUG_SLAB is not set
 CONFIG_DEBUG_PREEMPT=y
@@ -1056,7 +1121,8 @@ CONFIG_DEBUG_PREEMPT=y
 # CONFIG_DEBUG_KOBJECT is not set
 CONFIG_DEBUG_INFO=y
 # CONFIG_DEBUG_FS is not set
-# CONFIG_KPROBES is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_RCU_TORTURE_TEST is not set
 CONFIG_IA64_GRANULE_16MB=y
 # CONFIG_IA64_GRANULE_64MB is not set
 # CONFIG_IA64_PRINT_HAZARDS is not set
@@ -1097,7 +1163,7 @@ CONFIG_CRYPTO_DES=m
 # CONFIG_CRYPTO_ANUBIS is not set
 CONFIG_CRYPTO_DEFLATE=m
 # CONFIG_CRYPTO_MICHAEL_MIC is not set
-# CONFIG_CRYPTO_CRC32C is not set
+CONFIG_CRYPTO_CRC32C=m
 # CONFIG_CRYPTO_TEST is not set
 
 #

^ permalink raw reply related	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (32 preceding siblings ...)
  2005-12-12 18:20 ` Luck, Tony
@ 2005-12-13 20:12 ` Luck, Tony
  2005-12-14 21:40 ` Luck, Tony
                   ` (103 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2005-12-13 20:12 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

Another "last" ia64 pull for 2.6.15.  Please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the file shown below.

Thanks!

-Tony

 include/asm-ia64/sal.h |    3 ++-
 1 files changed, 2 insertions(+), 1 deletion(-)

Tony Luck:
      [IA64] Split 16-bit severity field in sal_log_record_header

diff-tree eed66cfcbbea851c97e287440d940286fce3f829 (from 90ac8f7741be4ff66de1f52904f4f67f272f74ce)
Author: Tony Luck <tony.luck@intel.com>
Date:   Tue Dec 13 10:41:49 2005 -0800

    [IA64] Split 16-bit severity field in sal_log_record_header
    
    ERR_SEVERITY item is defined as a 8 bits item in SAL documentation
    ($B.2.1 rev december 2003), but as an u16 in sal.h.
    This has the side effect that current code in mca.c may not call
    ia64_sal_clear_state_info() upon receiving corrected platform errors
    if there are bits set in the validation byte.  Reported by Xavier Bru.
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/include/asm-ia64/sal.h b/include/asm-ia64/sal.h
index 29df88b..313cad0 100644
--- a/include/asm-ia64/sal.h
+++ b/include/asm-ia64/sal.h
@@ -320,7 +320,8 @@ typedef struct sal_log_timestamp {
 typedef struct sal_log_record_header {
 	u64 id;				/* Unique monotonically increasing ID */
 	sal_log_revision_t revision;	/* Major and Minor revision of header */
-	u16 severity;			/* Error Severity */
+	u8 severity;			/* Error Severity */
+	u8 validation_bits;		/* 0: platform_guid, 1: !timestamp */
 	u32 len;			/* Length of this error log in bytes */
 	sal_log_timestamp_t timestamp;	/* Timestamp */
 	efi_guid_t platform_guid;	/* Unique OEM Platform ID */

^ permalink raw reply related	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (33 preceding siblings ...)
  2005-12-13 20:12 ` Luck, Tony
@ 2005-12-14 21:40 ` Luck, Tony
  2005-12-16 21:12 ` Luck, Tony
                   ` (102 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2005-12-14 21:40 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

Second (third?) in the series of "this is the last ia64 pull for 2.6.15".

Please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/kernel/process.c |    2 ++
 1 files changed, 2 insertions(+)

Robin Holt:
      [IA64] fix for SET_PERSONALITY when CONFIG_IA32_SUPPORT is not set.

diff-tree 27af4cfd11883073359bd5acab1962b0fa96a3bf (from acd9b7b4e08a3f0f48afa922d8e371414cf2d3b2)
Author: Robin Holt <holt@sgi.com>
Date:   Wed Dec 14 06:58:05 2005 -0600

    [IA64] fix for SET_PERSONALITY when CONFIG_IA32_SUPPORT is not set.
    
    Missed this when fixing the SET_PERSONALITY change.
    
    Signed-off-by: Robin Holt <holt@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c
index a4da715..e9904c7 100644
--- a/arch/ia64/kernel/process.c
+++ b/arch/ia64/kernel/process.c
@@ -721,11 +721,13 @@ flush_thread (void)
 	/* drop floating-point and debug-register state if it exists: */
 	current->thread.flags &= ~(IA64_THREAD_FPH_VALID | IA64_THREAD_DBG_VALID);
 	ia64_drop_fpu(current);
+#ifdef CONFIG_IA32_SUPPORT
 	if (IS_IA32_PROCESS(ia64_task_regs(current))) {
 		ia32_drop_partial_page_list(current);
 		current->thread.task_size = IA32_PAGE_OFFSET;
 		set_fs(USER_DS);
 	}
+#endif
 }
 
 /*

^ permalink raw reply related	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (34 preceding siblings ...)
  2005-12-14 21:40 ` Luck, Tony
@ 2005-12-16 21:12 ` Luck, Tony
  2006-01-05 22:09 ` Luck, Tony
                   ` (101 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2005-12-16 21:12 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

Could this be the real, final ia64 pull?  Only time will  tell.

The "disable preemption in udelay()" patch should have had a better
one-line description ... we break long udelay() calls into a series
of short non-preemptible pauses.  See the patch at the bottom of this
e-mail.  This will probably get more tuning post 2.6.15.

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/configs/sn2_defconfig   |    2 +-
 arch/ia64/kernel/time.c           |   29 +++++++++++++++++++++++++++++
 arch/ia64/kernel/uncached.c       |    6 +++---
 arch/ia64/kernel/vmlinux.lds.S    |    3 +++
 arch/ia64/sn/kernel/sn2/sn2_smp.c |    2 +-
 include/asm-ia64/delay.h          |   10 +---------
 include/linux/cache.h             |    2 +-
 7 files changed, 39 insertions(+), 15 deletions(-)

Christoph Lameter:
      [IA64] Add __read_mostly support for IA64

hawkes@sgi.com:
      [IA64-SGI] change default_sn2 to NR_CPUS=1024

Jack Steiner:
      [IA64-SGI] Missed TLB flush

Jes Sorensen:
      [IA64] uncached ref count leak

John Hawkes:
      [IA64] disable preemption in udelay()

diff-tree dc86e88c2bb8a7603ee175fbb6a9e92cf3293dd8 (from d5bf3165b6fbb879a4658f9da9ca2fe002b75f08)
Author: Christoph Lameter <clameter@engr.sgi.com>
Date:   Mon Dec 12 09:34:32 2005 -0800

    [IA64] Add __read_mostly support for IA64
    
    sparc64, i386 and x86_64 have support for a special data section dedicated
    to rarely updated data that is frequently read. The section was created to
    avoid false sharing of those rarely read data with frequently written kernel
    data.
    
    This patch creates such a data section for ia64 and will group rarely written
    data into this section.
    
    Signed-off-by: Christoph Lameter <clameter@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/vmlinux.lds.S b/arch/ia64/kernel/vmlinux.lds.S
index 30d8564..73af626 100644
--- a/arch/ia64/kernel/vmlinux.lds.S
+++ b/arch/ia64/kernel/vmlinux.lds.S
@@ -177,6 +177,9 @@ SECTIONS
 	}
   . = ALIGN(PAGE_SIZE);		/* make sure the gate page doesn't expose kernel data */
 
+  .data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET)
+        { *(.data.read_mostly) }
+
   .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET)
         { *(.data.cacheline_aligned) }
 
diff --git a/include/linux/cache.h b/include/linux/cache.h
index f6b5a46..0b7ecf3 100644
--- a/include/linux/cache.h
+++ b/include/linux/cache.h
@@ -13,7 +13,7 @@
 #define SMP_CACHE_BYTES L1_CACHE_BYTES
 #endif
 
-#if defined(CONFIG_X86) || defined(CONFIG_SPARC64)
+#if defined(CONFIG_X86) || defined(CONFIG_SPARC64) || defined(CONFIG_IA64)
 #define __read_mostly __attribute__((__section__(".data.read_mostly")))
 #else
 #define __read_mostly

diff-tree d5bf3165b6fbb879a4658f9da9ca2fe002b75f08 (from d74700e604db717eef7a3112176e6350fb00d0e3)
Author: hawkes@sgi.com <hawkes@sgi.com>
Date:   Tue Dec 13 13:45:44 2005 -0800

    [IA64-SGI] change default_sn2 to NR_CPUS=1024
    
    Change the NR_CPUS default for ia64/sn up to 1024.
    
    Signed-off-by: John Hawkes <hawkes@sgi.com>
    Signed-off-by: John Hesterberg <jh@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/configs/sn2_defconfig b/arch/ia64/configs/sn2_defconfig
index e1924cc..ff8bb37 100644
--- a/arch/ia64/configs/sn2_defconfig
+++ b/arch/ia64/configs/sn2_defconfig
@@ -113,7 +113,7 @@ CONFIG_IOSAPIC=y
 CONFIG_IA64_SGI_SN_XP=m
 CONFIG_FORCE_MAX_ZONEORDER\x17
 CONFIG_SMP=y
-CONFIG_NR_CPUSQ2
+CONFIG_NR_CPUS\x1024
 # CONFIG_HOTPLUG_CPU is not set
 CONFIG_SCHED_SMT=y
 CONFIG_PREEMPT=y

diff-tree d74700e604db717eef7a3112176e6350fb00d0e3 (from 3bd7f01713f30e7c616ab975ebb84ab7eb58a60a)
Author: Jack Steiner <steiner@sgi.com>
Date:   Thu Dec 15 12:41:22 2005 -0600

    [IA64-SGI] Missed TLB flush
    
    I see why the problem exists only on SN. SN uses a different hardware
    mechanism to purge TLB entries across nodes.
    
    It looks like there is a bug in the SN TLB flushing code. During context switch,
    kernel threads inherit the mm of the task that was previously running on the
    cpu. This confuses the code in sn2_global_tlb_purge().
    
    The result is a missed TLB purge for the task that owns the "borrowed" mm.
    
    (I hit the problem running heavy stress where kswapd was purging code pages of
    a user task that woke kswapd. The user task took a SIGILL fault trying to
    execute code in the page that had been ripped out from underneath it).
    
    Signed-off-by: Jack Steiner <steiner@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/sn/kernel/sn2/sn2_smp.c b/arch/ia64/sn/kernel/sn2/sn2_smp.c
index 5d54f5f..471bbaa 100644
--- a/arch/ia64/sn/kernel/sn2/sn2_smp.c
+++ b/arch/ia64/sn/kernel/sn2/sn2_smp.c
@@ -202,7 +202,7 @@ sn2_global_tlb_purge(struct mm_struct *m
 		     unsigned long end, unsigned long nbits)
 {
 	int i, opt, shub1, cnode, mynasid, cpu, lcpu = 0, nasid, flushed = 0;
-	int mymm = (mm = current->active_mm);
+	int mymm = (mm = current->active_mm && current->mm);
 	volatile unsigned long *ptc0, *ptc1;
 	unsigned long itc, itc2, flags, data0 = 0, data1 = 0, rr_value;
 	short nasids[MAX_NUMNODES], nix;

diff-tree 3bd7f01713f30e7c616ab975ebb84ab7eb58a60a (from f5899b5d4fa806403f547dc41312d017d94ec273)
Author: Jes Sorensen <jes@trained-monkey.org>
Date:   Fri Dec 16 11:00:03 2005 -0500

    [IA64] uncached ref count leak
    
    Use raw_smp_processor_id() instead of get_cpu() as we don't need the
    extra features of get_cpu().
    
    Signed-off-by: Jes Sorensen <jes@trained-monkey.org>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/uncached.c b/arch/ia64/kernel/uncached.c
index c6d4044..b631cf8 100644
--- a/arch/ia64/kernel/uncached.c
+++ b/arch/ia64/kernel/uncached.c
@@ -53,7 +53,7 @@ static void uncached_ipi_visibility(void
 	if ((status != PAL_VISIBILITY_OK) &&
 	    (status != PAL_VISIBILITY_OK_REMOTE_NEEDED))
 		printk(KERN_DEBUG "pal_prefetch_visibility() returns %i on "
-		       "CPU %i\n", status, get_cpu());
+		       "CPU %i\n", status, raw_smp_processor_id());
 }
 
 
@@ -63,7 +63,7 @@ static void uncached_ipi_mc_drain(void *
 	status = ia64_pal_mc_drain();
 	if (status)
 		printk(KERN_WARNING "ia64_pal_mc_drain() failed with %i on "
-		       "CPU %i\n", status, get_cpu());
+		       "CPU %i\n", status, raw_smp_processor_id());
 }
 
 
@@ -105,7 +105,7 @@ uncached_get_new_chunk(struct gen_pool *
 	status = ia64_pal_prefetch_visibility(PAL_VISIBILITY_PHYSICAL);
 
 	dprintk(KERN_INFO "pal_prefetch_visibility() returns %i on cpu %i\n",
-		status, get_cpu());
+		status, raw_smp_processor_id());
 
 	if (!status) {
 		status = smp_call_function(uncached_ipi_visibility, NULL, 0, 1);

diff-tree f5899b5d4fa806403f547dc41312d017d94ec273 (from 7b6666530e2736f190a2629c8abe34275054449f)
Author: John Hawkes <hawkes@sgi.com>
Date:   Fri Dec 16 10:00:24 2005 -0800

    [IA64] disable preemption in udelay()
    
    The udelay() inline for ia64 uses the ITC.  If CONFIG_PREEMPT is enabled
    and the platform has unsynchronized ITCs and the calling task migrates
    to another CPU while doing the udelay loop, then the effective delay may
    be too short or very, very long.
    
    This patch disables preemption around 100 usec chunks of the overall
    desired udelay time.  This minimizes preemption-holdoffs.
    
    udelay() is now too big to be inline, move it out of line and export it.
    
    Signed-off-by: John Hawkes <hawkes@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c
index 5b7e736..028a2b9 100644
--- a/arch/ia64/kernel/time.c
+++ b/arch/ia64/kernel/time.c
@@ -249,3 +249,32 @@ time_init (void)
 	 */
 	set_normalized_timespec(&wall_to_monotonic, -xtime.tv_sec, -xtime.tv_nsec);
 }
+
+#define SMALLUSECS 100
+
+void
+udelay (unsigned long usecs)
+{
+	unsigned long start;
+	unsigned long cycles;
+	unsigned long smallusecs;
+
+	/*
+	 * Execute the non-preemptible delay loop (because the ITC might
+	 * not be synchronized between CPUS) in relatively short time
+	 * chunks, allowing preemption between the chunks.
+	 */
+	while (usecs > 0) {
+		smallusecs = (usecs > SMALLUSECS) ? SMALLUSECS : usecs;
+		preempt_disable();
+		cycles = smallusecs*local_cpu_data->cyc_per_usec;
+		start = ia64_get_itc();
+
+		while (ia64_get_itc() - start < cycles)
+			cpu_relax();
+
+		preempt_enable();
+		usecs -= smallusecs;
+	}
+}
+EXPORT_SYMBOL(udelay);
diff --git a/include/asm-ia64/delay.h b/include/asm-ia64/delay.h
index 57182d6..bba7020 100644
--- a/include/asm-ia64/delay.h
+++ b/include/asm-ia64/delay.h
@@ -84,14 +84,6 @@ __delay (unsigned long loops)
 	ia64_delay_loop (loops - 1);
 }
 
-static __inline__ void
-udelay (unsigned long usecs)
-{
-	unsigned long start = ia64_get_itc();
-	unsigned long cycles = usecs*local_cpu_data->cyc_per_usec;
-
-	while (ia64_get_itc() - start < cycles)
-		cpu_relax();
-}
+extern void udelay (unsigned long usecs);
 
 #endif /* _ASM_IA64_DELAY_H */

^ permalink raw reply related	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (35 preceding siblings ...)
  2005-12-16 21:12 ` Luck, Tony
@ 2006-01-05 22:09 ` Luck, Tony
  2006-01-14 13:43 ` Luck, Tony
                   ` (100 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-01-05 22:09 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

A couple of easy one-liners as I wake-up from the holiday hibernation.

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/kernel/setup.c |    2 +-
 arch/ia64/pci/pci.c      |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

Alex Williamson:
      [IA64] incorrect return from ia64_pci_legacy_write()

Tony Luck:
      [IA64] Fix compile warnings in setup.c


^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (36 preceding siblings ...)
  2006-01-05 22:09 ` Luck, Tony
@ 2006-01-14 13:43 ` Luck, Tony
  2006-01-17  4:30 ` Luck, Tony
                   ` (99 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-01-14 13:43 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/sn/kernel/xpc.h               | 1274 -------------------------------
 arch/ia64/hp/sim/simserial.c            |   10 
 arch/ia64/kernel/fsys.S                 |    1 
 arch/ia64/kernel/jprobes.S              |   27 
 arch/ia64/kernel/kprobes.c              |   57 +
 arch/ia64/kernel/mca_asm.S              |    2 
 arch/ia64/kernel/salinfo.c              |  170 ++--
 arch/ia64/kernel/traps.c                |   26 
 arch/ia64/mm/tlb.c                      |    2 
 arch/ia64/sn/include/xtalk/hubdev.h     |   16 
 arch/ia64/sn/kernel/bte_error.c         |   58 +
 arch/ia64/sn/kernel/huberror.c          |    9 
 arch/ia64/sn/kernel/io_init.c           |   92 +-
 arch/ia64/sn/kernel/xpc.h               |    3 
 arch/ia64/sn/kernel/xpc_channel.c       |   24 
 arch/ia64/sn/kernel/xpc_main.c          |  189 +++-
 arch/ia64/sn/kernel/xpc_partition.c     |   10 
 arch/ia64/sn/pci/pcibr/pcibr_dma.c      |   34 
 arch/ia64/sn/pci/pcibr/pcibr_provider.c |   20 
 include/asm-ia64/kprobes.h              |    6 
 include/asm-ia64/sn/sn_sal.h            |    5 
 include/asm-ia64/sn/xp.h                |    4 
 include/asm-ia64/sn/xpc.h               | 1282 +++++++++++++++++++++++++++++++-
 include/asm-ia64/thread_info.h          |    4 
 24 files changed, 1817 insertions(+), 1508 deletions(-)

Andreas Schwab:
      [IA64] build broken for ia64 simserial.c

Dean Nelson:
      [IA64-SGI] ensure XPC disengage request is processed
      [IA64-SGI] cleanup XPC disengage related messages
      [IA64-SGI] XPC and unregistering from notifier lists
      [IA64-SGI] ignoring loss of heartbeat while XPC is in kdebug
      [IA64-SGI] move xpc_system_reboot()
      [IA64-SGI] move xpc.h to include/asm-ia64/sn
      [IA64-SGI] move xpc.h to include/asm-ia64/sn (cleanup)

Francois Wellenrieter:
      [IA64] Fix conversion of pal_min_state physical address

Jack Steiner:
      [IA64] Hole in IA64 TLB flushing from system threads

Jason Uhlenkott:
      [IA64] Handle debug traps in fsys mode

Keith Owens:
      [IA64] Add hotplug cpu to salinfo.c, replace semaphore with mutex

Prarit Bhargava:
      [IA64-SGI] Fix sn_flush_device_kernel & spinlock initialization

Russ Anderson:
      [IA64-SGI] Altix BTE error handling fixes

Tony Luck:
      [IA64] Add stub entry to fsys.S for sys_migrate_pages

Zhang Yanmin:
      [IA64] prevent accidental modification of args in jprobe handler


^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (37 preceding siblings ...)
  2006-01-14 13:43 ` Luck, Tony
@ 2006-01-17  4:30 ` Luck, Tony
  2006-01-20  0:03 ` Luck, Tony
                   ` (98 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-01-17  4:30 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.  Looks big in the diffstat, but >90%
of the changes come from Prarit's cleanup of the SGI code to swapout all the
uint64_t for u64 etc.

Thanks!

-Tony

 arch/ia64/kernel/perfmon.c                 |    2 
 arch/ia64/kernel/perfmon_montecito.h       |  269 +++++
 arch/ia64/mm/init.c                        |   36 
 arch/ia64/pci/pci.c                        |   19 
 arch/ia64/sn/include/xtalk/hubdev.h        |   10 
 arch/ia64/sn/include/xtalk/xbow.h          |  198 +--
 arch/ia64/sn/include/xtalk/xwidgetdev.h    |   46 
 arch/ia64/sn/kernel/io_init.c              |   10 
 arch/ia64/sn/kernel/irq.c                  |   10 
 arch/ia64/sn/kernel/tiocx.c                |   18 
 arch/ia64/sn/pci/pcibr/pcibr_ate.c         |   16 
 arch/ia64/sn/pci/pcibr/pcibr_dma.c         |   44 
 arch/ia64/sn/pci/pcibr/pcibr_provider.c    |   12 
 arch/ia64/sn/pci/pcibr/pcibr_reg.c         |   28 
 arch/ia64/sn/pci/tioca_provider.c          |   36 
 arch/ia64/sn/pci/tioce_provider.c          |   68 -
 include/asm-ia64/pal.h                     |    2 
 include/asm-ia64/processor.h               |    4 
 include/asm-ia64/sn/intr.h                 |    2 
 include/asm-ia64/sn/pcibr_provider.h       |   48 
 include/asm-ia64/sn/pcibus_provider_defs.h |   14 
 include/asm-ia64/sn/pcidev.h               |    4 
 include/asm-ia64/sn/pic.h                  |  204 +--
 include/asm-ia64/sn/shubio.h               | 1552 ++++++++++++++---------------
 include/asm-ia64/sn/sn_sal.h               |   12 
 include/asm-ia64/sn/tioca.h                |   78 -
 include/asm-ia64/sn/tioca_provider.h       |   56 -
 include/asm-ia64/sn/tioce.h                |  652 ++++++------
 include/asm-ia64/sn/tioce_provider.h       |   30 
 include/asm-ia64/sn/tiocp.h                |  254 ++--
 include/asm-ia64/sn/tiocx.h                |   14 
 31 files changed, 2037 insertions(+), 1711 deletions(-)

Kenji Kaneshige:
      [IA64] Stop multiple pci_claim_resource() call for the same resource

Prarit Bhargava:
      [IA64] Cleanup of arch/ia64/sn and include/asm-ia64/sn

Stephane Eranian:
      [IA64] Perfmon for Montecito

Xu, Anthony:
      [IA64] pal cache flush patch

Yasunori Goto:
      [IA64] Simple memory hot-add for ia64.


^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (38 preceding siblings ...)
  2006-01-17  4:30 ` Luck, Tony
@ 2006-01-20  0:03 ` Luck, Tony
  2006-02-09  0:36 ` Luck, Tony
                   ` (97 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-01-20  0:03 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

A few post-rc1 fixes and cleanups.  Please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/ia32/sys_ia32.c               |   28 ++----
 arch/ia64/kernel/perfmon.c              |   11 +-
 arch/ia64/kernel/uncached.c             |    1 
 arch/ia64/sn/include/xtalk/hubdev.h     |    9 ++
 arch/ia64/sn/kernel/io_init.c           |   54 ++++++++++++-
 arch/ia64/sn/kernel/mca.c               |    7 -
 arch/ia64/sn/kernel/xp_main.c           |   17 ++--
 arch/ia64/sn/kernel/xpc_channel.c       |   34 +++-----
 arch/ia64/sn/kernel/xpc_main.c          |   17 ++--
 arch/ia64/sn/pci/pcibr/pcibr_provider.c |   12 +-
 drivers/serial/sn_console.c             |  129 ++++++++++++++------------------
 include/asm-ia64/semaphore.h            |    8 -
 include/asm-ia64/sn/xp.h                |    3 
 include/asm-ia64/sn/xpc.h               |    9 +-
 include/asm-ia64/topology.h             |    4 
 15 files changed, 196 insertions(+), 147 deletions(-)

Jack Steiner:
      [IA64] Zonelists for nodes without cpus

Jes Sorensen:
      [IA64-SGI] sn2 mutex conversion
      [IA64-SGI] sn_console.c minor cleanup
      [IA64] sem2mutex: arch/ia64/ia32/sys_ia32.c
      [IA64] sem2mutex: arch/ia64/kernel/perfmon.c

John Hawkes:
      [IA64] eliminate softlockup warning

Mike Habeck:
      [IA64-SGI] pass segment# on SN_SAL_IOIF_SLOT_{DIS,EN}ABLE calls

Prarit Bhargava:
      [IA64-SGI] Older PROM WAR for device flush code

Zoltan Menyhart:
      [IA64] Fix bug in ia64 specific down() function

diff-tree 386d1d50c8eef254653b1015fde06622ef38ba76 (from 60f1c4443c4d391d8dfbe709f13296067b6c8021)
Author: John Hawkes <hawkes@sgi.com>
Date:   Wed Jan 18 23:46:53 2006 -0800

    [IA64] eliminate softlockup warning
    
    Fix an unnecessary softlockup watchdog warning in the ia64
    uncached_build_memmap() that occurs occasionally at 256p and always at
    512p.  The problem occurs at boot time.
    
    Signed-off-by: John Hawkes <hawkes@sgi.com>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/uncached.c b/arch/ia64/kernel/uncached.c
index b631cf8..fcd2bad 100644
--- a/arch/ia64/kernel/uncached.c
+++ b/arch/ia64/kernel/uncached.c
@@ -210,6 +210,7 @@ uncached_build_memmap(unsigned long star
 
 	dprintk(KERN_ERR "uncached_build_memmap(%lx %lx)\n", start, end);
 
+	touch_softlockup_watchdog();
 	memset((char *)start, 0, length);
 
 	node = paddr_to_nid(start - __IA64_UNCACHED_OFFSET);

diff-tree 60f1c4443c4d391d8dfbe709f13296067b6c8021 (from 92ff2ecd0deddc4c5fb2140d5861d0ddd50e9e57)
Author: Jes Sorensen <jes@sgi.com>
Date:   Wed Jan 18 23:46:52 2006 -0800

    [IA64] sem2mutex: arch/ia64/kernel/perfmon.c
    
    Migrate perfmon from using an old semaphore to a completion handler.
    
    Signed-off-by: Jes Sorensen <jes@sgi.com>
    Signed-off-by: Ingo Molnar <mingo@elte.hu>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c
index 2ea4b39..9c5194b 100644
--- a/arch/ia64/kernel/perfmon.c
+++ b/arch/ia64/kernel/perfmon.c
@@ -40,6 +40,7 @@
 #include <linux/bitops.h>
 #include <linux/capability.h>
 #include <linux/rcupdate.h>
+#include <linux/completion.h>
 
 #include <asm/errno.h>
 #include <asm/intrinsics.h>
@@ -286,7 +287,7 @@ typedef struct pfm_context {
 
 	unsigned long		ctx_ovfl_regs[4];	/* which registers overflowed (notification) */
 
-	struct semaphore	ctx_restart_sem;   	/* use for blocking notification mode */
+	struct completion	ctx_restart_done;  	/* use for blocking notification mode */
 
 	unsigned long		ctx_used_pmds[4];	/* bitmask of PMD used            */
 	unsigned long		ctx_all_pmds[4];	/* bitmask of all accessible PMDs */
@@ -1991,7 +1992,7 @@ pfm_close(struct inode *inode, struct fi
 		/*
 		 * force task to wake up from MASKED state
 		 */
-		up(&ctx->ctx_restart_sem);
+		complete(&ctx->ctx_restart_done);
 
 		DPRINT(("waking up ctx_state=%d\n", state));
 
@@ -2706,7 +2707,7 @@ pfm_context_create(pfm_context_t *ctx, v
 	/*
 	 * init restart semaphore to locked
 	 */
-	sema_init(&ctx->ctx_restart_sem, 0);
+	init_completion(&ctx->ctx_restart_done);
 
 	/*
 	 * activation is used in SMP only
@@ -3687,7 +3688,7 @@ pfm_restart(pfm_context_t *ctx, void *ar
 	 */
 	if (CTX_OVFL_NOBLOCK(ctx) = 0 && state = PFM_CTX_MASKED) {
 		DPRINT(("unblocking [%d] \n", task->pid));
-		up(&ctx->ctx_restart_sem);
+		complete(&ctx->ctx_restart_done);
 	} else {
 		DPRINT(("[%d] armed exit trap\n", task->pid));
 
@@ -5089,7 +5090,7 @@ pfm_handle_work(void)
 	 * may go through without blocking on SMP systems
 	 * if restart has been received already by the time we call down()
 	 */
-	ret = down_interruptible(&ctx->ctx_restart_sem);
+	ret = wait_for_completion_interruptible(&ctx->ctx_restart_done);
 
 	DPRINT(("after block sleeping ret=%d\n", ret));
 

diff-tree 92ff2ecd0deddc4c5fb2140d5861d0ddd50e9e57 (from 4b16bfbf8f8013fefb49592d030ff87651ab48cb)
Author: Jes Sorensen <jes@sgi.com>
Date:   Wed Jan 18 23:46:51 2006 -0800

    [IA64] sem2mutex: arch/ia64/ia32/sys_ia32.c
    
    Migrate arch/ia64/ia32/sys_ia32 to using a mutex for mmap protection.
    
    Signed-off-by: Jes Sorensen <jes@sgi.com>
    Signed-off-by: Ingo Molnar <mingo@elte.hu>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/ia32/sys_ia32.c b/arch/ia64/ia32/sys_ia32.c
index 3945d37..70dba1f 100644
--- a/arch/ia64/ia32/sys_ia32.c
+++ b/arch/ia64/ia32/sys_ia32.c
@@ -52,9 +52,9 @@
 #include <linux/compat.h>
 #include <linux/vfs.h>
 #include <linux/mman.h>
+#include <linux/mutex.h>
 
 #include <asm/intrinsics.h>
-#include <asm/semaphore.h>
 #include <asm/types.h>
 #include <asm/uaccess.h>
 #include <asm/unistd.h>
@@ -86,7 +86,7 @@
  * while doing so.
  */
 /* XXX make per-mm: */
-static DECLARE_MUTEX(ia32_mmap_sem);
+static DEFINE_MUTEX(ia32_mmap_mutex);
 
 asmlinkage long
 sys32_execve (char __user *name, compat_uptr_t __user *argv, compat_uptr_t __user *envp,
@@ -895,11 +895,11 @@ ia32_do_mmap (struct file *file, unsigne
 	prot = get_prot32(prot);
 
 #if PAGE_SHIFT > IA32_PAGE_SHIFT
-	down(&ia32_mmap_sem);
+	mutex_lock(&ia32_mmap_mutex);
 	{
 		addr = emulate_mmap(file, addr, len, prot, flags, offset);
 	}
-	up(&ia32_mmap_sem);
+	mutex_unlock(&ia32_mmap_mutex);
 #else
 	down_write(&current->mm->mmap_sem);
 	{
@@ -1000,11 +1000,9 @@ sys32_munmap (unsigned int start, unsign
 	if (start >= end)
 		return 0;
 
-	down(&ia32_mmap_sem);
-	{
-		ret = sys_munmap(start, end - start);
-	}
-	up(&ia32_mmap_sem);
+	mutex_lock(&ia32_mmap_mutex);
+	ret = sys_munmap(start, end - start);
+	mutex_unlock(&ia32_mmap_mutex);
 #endif
 	return ret;
 }
@@ -1056,7 +1054,7 @@ sys32_mprotect (unsigned int start, unsi
 	if (retval < 0)
 		return retval;
 
-	down(&ia32_mmap_sem);
+	mutex_lock(&ia32_mmap_mutex);
 	{
 		if (offset_in_page(start)) {
 			/* start address is 4KB aligned but not page aligned. */
@@ -1080,7 +1078,7 @@ sys32_mprotect (unsigned int start, unsi
 		retval = sys_mprotect(start, end - start, prot);
 	}
   out:
-	up(&ia32_mmap_sem);
+	mutex_unlock(&ia32_mmap_mutex);
 	return retval;
 #endif
 }
@@ -1124,11 +1122,9 @@ sys32_mremap (unsigned int addr, unsigne
 	old_len = PAGE_ALIGN(old_end) - addr;
 	new_len = PAGE_ALIGN(new_end) - addr;
 
-	down(&ia32_mmap_sem);
-	{
-		ret = sys_mremap(addr, old_len, new_len, flags, new_addr);
-	}
-	up(&ia32_mmap_sem);
+	mutex_lock(&ia32_mmap_mutex);
+	ret = sys_mremap(addr, old_len, new_len, flags, new_addr);
+	mutex_unlock(&ia32_mmap_mutex);
 
 	if ((ret >= 0) && (old_len < new_len)) {
 		/* mremap expanded successfully */

diff-tree 4b16bfbf8f8013fefb49592d030ff87651ab48cb (from 8d08aed8d7714683b33666cc066e20f957dda01d)
Author: Zoltan Menyhart <Zoltan.Menyhart@bull.net>
Date:   Fri Jan 13 17:25:23 2006 +0100

    [IA64] Fix bug in ia64 specific down() function
    
    Chen, Kenneth W wrote:
    > The memory order semantics for include/asm-ia64/semaphore.h:down()
    > doesn't look right.  It is using atomic_dec_return, which eventually
    > translate into ia64_fetch_and_add() that uses release semantics.
    > Shouldn't it use acquire semantics?
    
    Use ia64_fetchadd() instead of atomic_dec_return()
    
    Acked-by: Ken Chen <kenneth.w.chen@intel.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/include/asm-ia64/semaphore.h b/include/asm-ia64/semaphore.h
index bb89062..f483eeb 100644
--- a/include/asm-ia64/semaphore.h
+++ b/include/asm-ia64/semaphore.h
@@ -61,7 +61,7 @@ static inline void
 down (struct semaphore *sem)
 {
 	might_sleep();
-	if (atomic_dec_return(&sem->count) < 0)
+	if (ia64_fetchadd(-1, &sem->count.counter, acq) < 1)
 		__down(sem);
 }
 
@@ -75,7 +75,7 @@ down_interruptible (struct semaphore * s
 	int ret = 0;
 
 	might_sleep();
-	if (atomic_dec_return(&sem->count) < 0)
+	if (ia64_fetchadd(-1, &sem->count.counter, acq) < 1)
 		ret = __down_interruptible(sem);
 	return ret;
 }
@@ -85,7 +85,7 @@ down_trylock (struct semaphore *sem)
 {
 	int ret = 0;
 
-	if (atomic_dec_return(&sem->count) < 0)
+	if (ia64_fetchadd(-1, &sem->count.counter, acq) < 1)
 		ret = __down_trylock(sem);
 	return ret;
 }
@@ -93,7 +93,7 @@ down_trylock (struct semaphore *sem)
 static inline void
 up (struct semaphore * sem)
 {
-	if (atomic_inc_return(&sem->count) <= 0)
+	if (ia64_fetchadd(1, &sem->count.counter, rel) <= -1)
 		__up(sem);
 }
 

diff-tree 8d08aed8d7714683b33666cc066e20f957dda01d (from d171e519da635a82ab759cbfd46617ac160c9ec0)
Author: Jack Steiner <steiner@sgi.com>
Date:   Tue Jan 17 15:42:46 2006 -0600

    [IA64] Zonelists for nodes without cpus
    
    If a node runs out of memory, ensure that memory on nodes w/o cpus is used
    before using memory on nodes with cpus.
    
    Signed-off-by: Jack Steiner <steiner@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/include/asm-ia64/topology.h b/include/asm-ia64/topology.h
index d8aae4d..412ef8e 100644
--- a/include/asm-ia64/topology.h
+++ b/include/asm-ia64/topology.h
@@ -18,6 +18,10 @@
 #include <asm/smp.h>
 
 #ifdef CONFIG_NUMA
+
+/* Nodes w/o CPUs are preferred for memory allocations, see build_zonelists */
+#define PENALTY_FOR_NODE_WITH_CPUS 255
+
 /*
  * Returns the number of the node containing CPU 'cpu'
  */

diff-tree d171e519da635a82ab759cbfd46617ac160c9ec0 (from f9e505a9a03df5acace6e758c8d12982635a1c64)
Author: Jes Sorensen <jes@sgi.com>
Date:   Tue Jan 17 13:05:12 2006 -0500

    [IA64-SGI] sn_console.c minor cleanup
    
    Fix printk level and remove unnecessary CONFIG_SMP|CONFIG_PREEMPT tests
    as this is taken care through the spinlock macros anyway.
    
    Signed-off-by: Jes Sorensen <jes@sgi.com>
    Signed-off-by: Pat Gefre <pfg@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/drivers/serial/sn_console.c b/drivers/serial/sn_console.c
index 5468e5a..43e67d6 100644
--- a/drivers/serial/sn_console.c
+++ b/drivers/serial/sn_console.c
@@ -6,7 +6,7 @@
  * driver for that.
  *
  *
- * Copyright (c) 2004-2005 Silicon Graphics, Inc.  All Rights Reserved.
+ * Copyright (c) 2004-2006 Silicon Graphics, Inc.  All Rights Reserved.
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of version 2 of the GNU General Public License
@@ -829,8 +829,8 @@ static int __init sn_sal_module_init(voi
 		misc.name = DEVICE_NAME_DYNAMIC;
 		retval = misc_register(&misc);
 		if (retval != 0) {
-			printk
-			    ("Failed to register console device using misc_register.\n");
+			printk(KERN_WARNING "Failed to register console "
+			       "device using misc_register.\n");
 			return -ENODEV;
 		}
 		sal_console_uart.major = MISC_MAJOR;
@@ -942,88 +942,75 @@ sn_sal_console_write(struct console *co,
 {
 	unsigned long flags = 0;
 	struct sn_cons_port *port = &sal_console_port;
-#if defined(CONFIG_SMP) || defined(CONFIG_PREEMPT)
 	static int stole_lock = 0;
-#endif
 
 	BUG_ON(!port->sc_is_asynch);
 
 	/* We can't look at the xmit buffer if we're not registered with serial core
 	 *  yet.  So only do the fancy recovery after registering
 	 */
-	if (port->sc_port.info) {
-
-		/* somebody really wants this output, might be an
-		 * oops, kdb, panic, etc.  make sure they get it. */
-#if defined(CONFIG_SMP) || defined(CONFIG_PREEMPT)
-		if (spin_is_locked(&port->sc_port.lock)) {
-			int lhead = port->sc_port.info->xmit.head;
-			int ltail = port->sc_port.info->xmit.tail;
-			int counter, got_lock = 0;
+	if (!port->sc_port.info) {
+		/* Not yet registered with serial core - simple case */
+		puts_raw_fixed(port->sc_ops->sal_puts_raw, s, count);
+		return;
+	}
 
-			/*
-			 * We attempt to determine if someone has died with the
-			 * lock. We wait ~20 secs after the head and tail ptrs
-			 * stop moving and assume the lock holder is not functional
-			 * and plow ahead. If the lock is freed within the time out
-			 * period we re-get the lock and go ahead normally. We also
-			 * remember if we have plowed ahead so that we don't have
-			 * to wait out the time out period again - the asumption
-			 * is that we will time out again.
-			 */
+	/* somebody really wants this output, might be an
+	 * oops, kdb, panic, etc.  make sure they get it. */
+	if (spin_is_locked(&port->sc_port.lock)) {
+		int lhead = port->sc_port.info->xmit.head;
+		int ltail = port->sc_port.info->xmit.tail;
+		int counter, got_lock = 0;
+
+		/*
+		 * We attempt to determine if someone has died with the
+		 * lock. We wait ~20 secs after the head and tail ptrs
+		 * stop moving and assume the lock holder is not functional
+		 * and plow ahead. If the lock is freed within the time out
+		 * period we re-get the lock and go ahead normally. We also
+		 * remember if we have plowed ahead so that we don't have
+		 * to wait out the time out period again - the asumption
+		 * is that we will time out again.
+		 */
 
-			for (counter = 0; counter < 150; mdelay(125), counter++) {
-				if (!spin_is_locked(&port->sc_port.lock)
-				    || stole_lock) {
-					if (!stole_lock) {
-						spin_lock_irqsave(&port->
-								  sc_port.lock,
-								  flags);
-						got_lock = 1;
-					}
-					break;
-				} else {
-					/* still locked */
-					if ((lhead !-					     port->sc_port.info->xmit.head)
-					    || (ltail !-						port->sc_port.info->xmit.
-						tail)) {
-						lhead -						    port->sc_port.info->xmit.
-						    head;
-						ltail -						    port->sc_port.info->xmit.
-						    tail;
-						counter = 0;
-					}
+		for (counter = 0; counter < 150; mdelay(125), counter++) {
+			if (!spin_is_locked(&port->sc_port.lock)
+			    || stole_lock) {
+				if (!stole_lock) {
+					spin_lock_irqsave(&port->sc_port.lock,
+							  flags);
+					got_lock = 1;
 				}
-			}
-			/* flush anything in the serial core xmit buffer, raw */
-			sn_transmit_chars(port, 1);
-			if (got_lock) {
-				spin_unlock_irqrestore(&port->sc_port.lock,
-						       flags);
-				stole_lock = 0;
+				break;
 			} else {
-				/* fell thru */
-				stole_lock = 1;
+				/* still locked */
+				if ((lhead != port->sc_port.info->xmit.head)
+				    || (ltail !+					port->sc_port.info->xmit.tail)) {
+					lhead +						port->sc_port.info->xmit.head;
+					ltail +						port->sc_port.info->xmit.tail;
+					counter = 0;
+				}
 			}
-			puts_raw_fixed(port->sc_ops->sal_puts_raw, s, count);
-		} else {
-			stole_lock = 0;
-#endif
-			spin_lock_irqsave(&port->sc_port.lock, flags);
-			sn_transmit_chars(port, 1);
+		}
+		/* flush anything in the serial core xmit buffer, raw */
+		sn_transmit_chars(port, 1);
+		if (got_lock) {
 			spin_unlock_irqrestore(&port->sc_port.lock, flags);
-
-			puts_raw_fixed(port->sc_ops->sal_puts_raw, s, count);
-#if defined(CONFIG_SMP) || defined(CONFIG_PREEMPT)
+			stole_lock = 0;
+		} else {
+			/* fell thru */
+			stole_lock = 1;
 		}
-#endif
-	}
-	else {
-		/* Not yet registered with serial core - simple case */
+		puts_raw_fixed(port->sc_ops->sal_puts_raw, s, count);
+	} else {
+		stole_lock = 0;
+		spin_lock_irqsave(&port->sc_port.lock, flags);
+		sn_transmit_chars(port, 1);
+		spin_unlock_irqrestore(&port->sc_port.lock, flags);
+
 		puts_raw_fixed(port->sc_ops->sal_puts_raw, s, count);
 	}
 }

diff-tree f9e505a9a03df5acace6e758c8d12982635a1c64 (from ac354a899b91239aac4d5893fc4288bc400e82b4)
Author: Jes Sorensen <jes@sgi.com>
Date:   Tue Jan 17 12:52:21 2006 -0500

    [IA64-SGI] sn2 mutex conversion
    
    Migrate sn2 code to use mutex and completion events rather than
    semaphores.
    
    Signed-off-by: Jes Sorensen <jes@sgi.com>
    Acked-by: Dean Nelson <dcn@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/sn/kernel/mca.c b/arch/ia64/sn/kernel/mca.c
index 6546db6..9ab684d 100644
--- a/arch/ia64/sn/kernel/mca.c
+++ b/arch/ia64/sn/kernel/mca.c
@@ -10,6 +10,7 @@
 #include <linux/kernel.h>
 #include <linux/timer.h>
 #include <linux/vmalloc.h>
+#include <linux/mutex.h>
 #include <asm/mca.h>
 #include <asm/sal.h>
 #include <asm/sn/sn_sal.h>
@@ -27,7 +28,7 @@ void sn_init_cpei_timer(void);
 /* Printing oemdata from mca uses data that is not passed through SAL, it is
  * global.  Only one user at a time.
  */
-static DECLARE_MUTEX(sn_oemdata_mutex);
+static DEFINE_MUTEX(sn_oemdata_mutex);
 static u8 **sn_oemdata;
 static u64 *sn_oemdata_size, sn_oemdata_bufsize;
 
@@ -89,7 +90,7 @@ static int
 sn_platform_plat_specific_err_print(const u8 * sect_header, u8 ** oemdata,
 				    u64 * oemdata_size)
 {
-	down(&sn_oemdata_mutex);
+	mutex_lock(&sn_oemdata_mutex);
 	sn_oemdata = oemdata;
 	sn_oemdata_size = oemdata_size;
 	sn_oemdata_bufsize = 0;
@@ -107,7 +108,7 @@ sn_platform_plat_specific_err_print(cons
 		*sn_oemdata_size = 0;
 		ia64_sn_plat_specific_err_print(print_hook, (char *)sect_header);
 	}
-	up(&sn_oemdata_mutex);
+	mutex_unlock(&sn_oemdata_mutex);
 	return 0;
 }
 
diff --git a/arch/ia64/sn/kernel/xp_main.c b/arch/ia64/sn/kernel/xp_main.c
index 3be52a3..b7ea466 100644
--- a/arch/ia64/sn/kernel/xp_main.c
+++ b/arch/ia64/sn/kernel/xp_main.c
@@ -19,6 +19,7 @@
 #include <linux/kernel.h>
 #include <linux/interrupt.h>
 #include <linux/module.h>
+#include <linux/mutex.h>
 #include <asm/sn/intr.h>
 #include <asm/sn/sn_sal.h>
 #include <asm/sn/xp.h>
@@ -136,13 +137,13 @@ xpc_connect(int ch_number, xpc_channel_f
 
 	registration = &xpc_registrations[ch_number];
 
-	if (down_interruptible(&registration->sema) != 0) {
+	if (mutex_lock_interruptible(&registration->mutex) != 0) {
 		return xpcInterrupted;
 	}
 
 	/* if XPC_CHANNEL_REGISTERED(ch_number) */
 	if (registration->func != NULL) {
-		up(&registration->sema);
+		mutex_unlock(&registration->mutex);
 		return xpcAlreadyRegistered;
 	}
 
@@ -154,7 +155,7 @@ xpc_connect(int ch_number, xpc_channel_f
 	registration->key = key;
 	registration->func = func;
 
-	up(&registration->sema);
+	mutex_unlock(&registration->mutex);
 
 	xpc_interface.connect(ch_number);
 
@@ -190,11 +191,11 @@ xpc_disconnect(int ch_number)
 	 * figured XPC's users will just turn around and call xpc_disconnect()
 	 * again anyways, so we might as well wait, if need be.
 	 */
-	down(&registration->sema);
+	mutex_lock(&registration->mutex);
 
 	/* if !XPC_CHANNEL_REGISTERED(ch_number) */
 	if (registration->func = NULL) {
-		up(&registration->sema);
+		mutex_unlock(&registration->mutex);
 		return;
 	}
 
@@ -208,7 +209,7 @@ xpc_disconnect(int ch_number)
 
 	xpc_interface.disconnect(ch_number);
 
-	up(&registration->sema);
+	mutex_unlock(&registration->mutex);
 
 	return;
 }
@@ -250,9 +251,9 @@ xp_init(void)
 		xp_nofault_PIOR_target = SH1_IPI_ACCESS;
 	}
 
-	/* initialize the connection registration semaphores */
+	/* initialize the connection registration mutex */
 	for (ch_number = 0; ch_number < XPC_NCHANNELS; ch_number++) {
-		sema_init(&xpc_registrations[ch_number].sema, 1);  /* mutex */
+		mutex_init(&xpc_registrations[ch_number].mutex);
 	}
 
 	return 0;
diff --git a/arch/ia64/sn/kernel/xpc_channel.c b/arch/ia64/sn/kernel/xpc_channel.c
index 0c0a689..8d950c7 100644
--- a/arch/ia64/sn/kernel/xpc_channel.c
+++ b/arch/ia64/sn/kernel/xpc_channel.c
@@ -22,6 +22,8 @@
 #include <linux/cache.h>
 #include <linux/interrupt.h>
 #include <linux/slab.h>
+#include <linux/mutex.h>
+#include <linux/completion.h>
 #include <asm/sn/bte.h>
 #include <asm/sn/sn_sal.h>
 #include <asm/sn/xpc.h>
@@ -56,8 +58,8 @@ xpc_initialize_channels(struct xpc_parti
 		atomic_set(&ch->n_to_notify, 0);
 
 		spin_lock_init(&ch->lock);
-		sema_init(&ch->msg_to_pull_sema, 1);	/* mutex */
-		sema_init(&ch->wdisconnect_sema, 0);	/* event wait */
+		mutex_init(&ch->msg_to_pull_mutex);
+		init_completion(&ch->wdisconnect_wait);
 
 		atomic_set(&ch->n_on_msg_allocate_wq, 0);
 		init_waitqueue_head(&ch->msg_allocate_wq);
@@ -534,7 +536,6 @@ static enum xpc_retval
 xpc_allocate_msgqueues(struct xpc_channel *ch)
 {
 	unsigned long irq_flags;
-	int i;
 	enum xpc_retval ret;
 
 
@@ -552,11 +553,6 @@ xpc_allocate_msgqueues(struct xpc_channe
 		return ret;
 	}
 
-	for (i = 0; i < ch->local_nentries; i++) {
-		/* use a semaphore as an event wait queue */
-		sema_init(&ch->notify_queue[i].sema, 0);
-	}
-
 	spin_lock_irqsave(&ch->lock, irq_flags);
 	ch->flags |= XPC_C_SETUP;
 	spin_unlock_irqrestore(&ch->lock, irq_flags);
@@ -799,10 +795,8 @@ xpc_process_disconnect(struct xpc_channe
 	}
 
 	if (ch->flags & XPC_C_WDISCONNECT) {
-		spin_unlock_irqrestore(&ch->lock, *irq_flags);
-		up(&ch->wdisconnect_sema);
-		spin_lock_irqsave(&ch->lock, *irq_flags);
-
+		/* we won't lose the CPU since we're holding ch->lock */
+		complete(&ch->wdisconnect_wait);
 	} else if (ch->delayed_IPI_flags) {
 		if (part->act_state != XPC_P_DEACTIVATING) {
 			/* time to take action on any delayed IPI flags */
@@ -1092,12 +1086,12 @@ xpc_connect_channel(struct xpc_channel *
 	struct xpc_registration *registration = &xpc_registrations[ch->number];
 
 
-	if (down_trylock(&registration->sema) != 0) {
+	if (mutex_trylock(&registration->mutex) = 0) {
 		return xpcRetry;
 	}
 
 	if (!XPC_CHANNEL_REGISTERED(ch->number)) {
-		up(&registration->sema);
+		mutex_unlock(&registration->mutex);
 		return xpcUnregistered;
 	}
 
@@ -1108,7 +1102,7 @@ xpc_connect_channel(struct xpc_channel *
 
 	if (ch->flags & XPC_C_DISCONNECTING) {
 		spin_unlock_irqrestore(&ch->lock, irq_flags);
-		up(&registration->sema);
+		mutex_unlock(&registration->mutex);
 		return ch->reason;
 	}
 
@@ -1140,7 +1134,7 @@ xpc_connect_channel(struct xpc_channel *
 			 * channel lock be locked and will unlock and relock
 			 * the channel lock as needed.
 			 */
-			up(&registration->sema);
+			mutex_unlock(&registration->mutex);
 			XPC_DISCONNECT_CHANNEL(ch, xpcUnequalMsgSizes,
 								&irq_flags);
 			spin_unlock_irqrestore(&ch->lock, irq_flags);
@@ -1155,7 +1149,7 @@ xpc_connect_channel(struct xpc_channel *
 		atomic_inc(&xpc_partitions[ch->partid].nchannels_active);
 	}
 
-	up(&registration->sema);
+	mutex_unlock(&registration->mutex);
 
 
 	/* initiate the connection */
@@ -2089,7 +2083,7 @@ xpc_pull_remote_msg(struct xpc_channel *
 	enum xpc_retval ret;
 
 
-	if (down_interruptible(&ch->msg_to_pull_sema) != 0) {
+	if (mutex_lock_interruptible(&ch->msg_to_pull_mutex) != 0) {
 		/* we were interrupted by a signal */
 		return NULL;
 	}
@@ -2125,7 +2119,7 @@ xpc_pull_remote_msg(struct xpc_channel *
 
 			XPC_DEACTIVATE_PARTITION(part, ret);
 
-			up(&ch->msg_to_pull_sema);
+			mutex_unlock(&ch->msg_to_pull_mutex);
 			return NULL;
 		}
 
@@ -2134,7 +2128,7 @@ xpc_pull_remote_msg(struct xpc_channel *
 		ch->next_msg_to_pull += nmsgs;
 	}
 
-	up(&ch->msg_to_pull_sema);
+	mutex_unlock(&ch->msg_to_pull_mutex);
 
 	/* return the message we were looking for */
 	msg_offset = (get % ch->remote_nentries) * ch->msg_size;
diff --git a/arch/ia64/sn/kernel/xpc_main.c b/arch/ia64/sn/kernel/xpc_main.c
index 8930586..c75f8ae 100644
--- a/arch/ia64/sn/kernel/xpc_main.c
+++ b/arch/ia64/sn/kernel/xpc_main.c
@@ -55,6 +55,7 @@
 #include <linux/slab.h>
 #include <linux/delay.h>
 #include <linux/reboot.h>
+#include <linux/completion.h>
 #include <asm/sn/intr.h>
 #include <asm/sn/sn_sal.h>
 #include <asm/kdebug.h>
@@ -177,10 +178,10 @@ static DECLARE_WAIT_QUEUE_HEAD(xpc_act_I
 static unsigned long xpc_hb_check_timeout;
 
 /* notification that the xpc_hb_checker thread has exited */
-static DECLARE_MUTEX_LOCKED(xpc_hb_checker_exited);
+static DECLARE_COMPLETION(xpc_hb_checker_exited);
 
 /* notification that the xpc_discovery thread has exited */
-static DECLARE_MUTEX_LOCKED(xpc_discovery_exited);
+static DECLARE_COMPLETION(xpc_discovery_exited);
 
 
 static struct timer_list xpc_hb_timer;
@@ -321,7 +322,7 @@ xpc_hb_checker(void *ignore)
 
 
 	/* mark this thread as having exited */
-	up(&xpc_hb_checker_exited);
+	complete(&xpc_hb_checker_exited);
 	return 0;
 }
 
@@ -341,7 +342,7 @@ xpc_initiate_discovery(void *ignore)
 	dev_dbg(xpc_part, "discovery thread is exiting\n");
 
 	/* mark this thread as having exited */
-	up(&xpc_discovery_exited);
+	complete(&xpc_discovery_exited);
 	return 0;
 }
 
@@ -893,7 +894,7 @@ xpc_disconnect_wait(int ch_number)
 			continue;
 		}
 
-		(void) down(&ch->wdisconnect_sema);
+		wait_for_completion(&ch->wdisconnect_wait);
 
 		spin_lock_irqsave(&ch->lock, irq_flags);
 		DBUG_ON(!(ch->flags & XPC_C_DISCONNECTED));
@@ -946,10 +947,10 @@ xpc_do_exit(enum xpc_retval reason)
 	free_irq(SGI_XPC_ACTIVATE, NULL);
 
 	/* wait for the discovery thread to exit */
-	down(&xpc_discovery_exited);
+	wait_for_completion(&xpc_discovery_exited);
 
 	/* wait for the heartbeat checker thread to exit */
-	down(&xpc_hb_checker_exited);
+	wait_for_completion(&xpc_hb_checker_exited);
 
 
 	/* sleep for a 1/3 of a second or so */
@@ -1367,7 +1368,7 @@ xpc_init(void)
 		dev_err(xpc_part, "failed while forking discovery thread\n");
 
 		/* mark this new thread as a non-starter */
-		up(&xpc_discovery_exited);
+		complete(&xpc_discovery_exited);
 
 		xpc_do_exit(xpcUnloading);
 		return -EBUSY;
diff --git a/include/asm-ia64/sn/xp.h b/include/asm-ia64/sn/xp.h
index 203945a..9bd2f9b 100644
--- a/include/asm-ia64/sn/xp.h
+++ b/include/asm-ia64/sn/xp.h
@@ -18,6 +18,7 @@
 
 #include <linux/cache.h>
 #include <linux/hardirq.h>
+#include <linux/mutex.h>
 #include <asm/sn/types.h>
 #include <asm/sn/bte.h>
 
@@ -359,7 +360,7 @@ typedef void (*xpc_notify_func)(enum xpc
  * the channel.
  */
 struct xpc_registration {
-	struct semaphore sema;
+	struct mutex mutex;
 	xpc_channel_func func;		/* function to call */
 	void *key;			/* pointer to user's key */
 	u16 nentries;			/* #of msg entries in local msg queue */
diff --git a/include/asm-ia64/sn/xpc.h b/include/asm-ia64/sn/xpc.h
index 87e9cd5..0c36928 100644
--- a/include/asm-ia64/sn/xpc.h
+++ b/include/asm-ia64/sn/xpc.h
@@ -19,6 +19,8 @@
 #include <linux/interrupt.h>
 #include <linux/sysctl.h>
 #include <linux/device.h>
+#include <linux/mutex.h>
+#include <linux/completion.h>
 #include <asm/pgtable.h>
 #include <asm/processor.h>
 #include <asm/sn/bte.h>
@@ -335,8 +337,7 @@ struct xpc_openclose_args {
  * and consumed by the intended recipient.
  */
 struct xpc_notify {
-	struct semaphore sema;		/* notify semaphore */
-	volatile u8 type;			/* type of notification */
+	volatile u8 type;		/* type of notification */
 
 	/* the following two fields are only used if type = XPC_N_CALL */
 	xpc_notify_func func;		/* user's notify function */
@@ -465,8 +466,8 @@ struct xpc_channel {
 	xpc_channel_func func;		/* user's channel function */
 	void *key;			/* pointer to user's key */
 
-	struct semaphore msg_to_pull_sema; /* next msg to pull serialization */
-	struct semaphore wdisconnect_sema; /* wait for channel disconnect */
+	struct mutex msg_to_pull_mutex;	/* next msg to pull serialization */
+	struct completion wdisconnect_wait; /* wait for channel disconnect */
 
 	struct xpc_openclose_args *local_openclose_args; /* args passed on */
 					/* opening or closing of channel */

diff-tree ac354a899b91239aac4d5893fc4288bc400e82b4 (from 5f7f5b0c99c9c913b649d065a9773e6ed4ed8168)
Author: Mike Habeck <habeck@sgi.com>
Date:   Wed Jan 11 16:40:24 2006 -0600

    [IA64-SGI] pass segment# on SN_SAL_IOIF_SLOT_{DIS,EN}ABLE calls
    
    Bugfix... the altix SN_SAL_IOIF_SLOT_ENABLE & SN_SAL_IOIF_SLOT_DISABLE
    SAL calls need to pass the segment# down
    
    Signed-off-by: Mike Habeck <habeck@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/sn/pci/pcibr/pcibr_provider.c b/arch/ia64/sn/pci/pcibr/pcibr_provider.c
index 77a1262..2fac270 100644
--- a/arch/ia64/sn/pci/pcibr/pcibr_provider.c
+++ b/arch/ia64/sn/pci/pcibr/pcibr_provider.c
@@ -24,13 +24,15 @@ sal_pcibr_slot_enable(struct pcibus_info
 {
 	struct ia64_sal_retval ret_stuff;
 	u64 busnum;
+	u64 segment;
 
 	ret_stuff.status = 0;
 	ret_stuff.v0 = 0;
 
+	segment = soft->pbi_buscommon.bs_persist_segment;
 	busnum = soft->pbi_buscommon.bs_persist_busnum;
-	SAL_CALL_NOLOCK(ret_stuff, (u64) SN_SAL_IOIF_SLOT_ENABLE, (u64) busnum,
-			(u64) device, (u64) resp, 0, 0, 0, 0);
+	SAL_CALL_NOLOCK(ret_stuff, (u64) SN_SAL_IOIF_SLOT_ENABLE, segment,
+			busnum, (u64) device, (u64) resp, 0, 0, 0);
 
 	return (int)ret_stuff.v0;
 }
@@ -41,14 +43,16 @@ sal_pcibr_slot_disable(struct pcibus_inf
 {
 	struct ia64_sal_retval ret_stuff;
 	u64 busnum;
+	u64 segment;
 
 	ret_stuff.status = 0;
 	ret_stuff.v0 = 0;
 
+	segment = soft->pbi_buscommon.bs_persist_segment;
 	busnum = soft->pbi_buscommon.bs_persist_busnum;
 	SAL_CALL_NOLOCK(ret_stuff, (u64) SN_SAL_IOIF_SLOT_DISABLE,
-			(u64) busnum, (u64) device, (u64) action,
-			(u64) resp, 0, 0, 0);
+			segment, busnum, (u64) device, (u64) action,
+			(u64) resp, 0, 0);
 
 	return (int)ret_stuff.v0;
 }

diff-tree 5f7f5b0c99c9c913b649d065a9773e6ed4ed8168 (from 2664b25051f7ab96b22b199aa2f5ef6a949a4296)
Author: Prarit Bhargava <prarit@sgi.com>
Date:   Mon Jan 16 15:31:52 2006 -0500

    [IA64-SGI] Older PROM WAR for device flush code
    
    Work-around to temporarily support older PROMs with new flush device code.
    
    This code allows systems running older PROMs to continue to run on the new
    kernel base until a new official PROM is released.
    
    Signed-off-by: Prarit Bhargava <prarit@sgi.com>
    Acked-by: Jes Sorensen <jes@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/sn/include/xtalk/hubdev.h b/arch/ia64/sn/include/xtalk/hubdev.h
index 7c88e9a..8182583 100644
--- a/arch/ia64/sn/include/xtalk/hubdev.h
+++ b/arch/ia64/sn/include/xtalk/hubdev.h
@@ -51,6 +51,15 @@ struct sn_flush_device_kernel {
 	struct sn_flush_device_common *common;
 };
 
+/* 01/16/06 This struct is the old PROM/kernel struct and needs to be included
+ * for older official PROMs to function on the new kernel base.  This struct
+ * will be removed when the next official PROM release occurs. */
+
+struct sn_flush_device_war {
+	struct sn_flush_device_common common;
+	u32 filler; /* older PROMs expect the default size of a spinlock_t */
+};
+
 /*
  * **widget_p - Used as an array[wid_num][device] of sn_flush_device_kernel.
  */
diff --git a/arch/ia64/sn/kernel/io_init.c b/arch/ia64/sn/kernel/io_init.c
index 233d551..00700f7 100644
--- a/arch/ia64/sn/kernel/io_init.c
+++ b/arch/ia64/sn/kernel/io_init.c
@@ -165,8 +165,45 @@ sn_pcidev_info_get(struct pci_dev *dev)
 	return NULL;
 }
 
+/* Older PROM flush WAR
+ *
+ * 01/16/06 -- This war will be in place until a new official PROM is released.
+ * Additionally note that the struct sn_flush_device_war also has to be
+ * removed from arch/ia64/sn/include/xtalk/hubdev.h
+ */
+static u8 war_implemented = 0;
+
+static void sn_device_fixup_war(u64 nasid, u64 widget, int device,
+				struct sn_flush_device_common *common)
+{
+	struct sn_flush_device_war *war_list;
+	struct sn_flush_device_war *dev_entry;
+	struct ia64_sal_retval isrv = {0,0,0,0};
+
+	if (!war_implemented) {
+		printk(KERN_WARNING "PROM version < 4.50 -- implementing old "
+		       "PROM flush WAR\n");
+		war_implemented = 1;
+	}
+
+	war_list = kzalloc(DEV_PER_WIDGET * sizeof(*war_list), GFP_KERNEL);
+	if (!war_list)
+		BUG();
+
+	SAL_CALL_NOLOCK(isrv, SN_SAL_IOIF_GET_WIDGET_DMAFLUSH_LIST,
+			nasid, widget, __pa(war_list), 0, 0, 0 ,0);
+	if (isrv.status)
+		panic("sn_device_fixup_war failed: %s\n",
+		      ia64_sal_strerror(isrv.status));
+
+	dev_entry = war_list + device;
+	memcpy(common,dev_entry, sizeof(*common));
+
+	kfree(war_list);
+}
+
 /*
- * sn_fixup_ionodes() - This routine initializes the HUB data strcuture for 
+ * sn_fixup_ionodes() - This routine initializes the HUB data strcuture for
  *	each node in the system.
  */
 static void sn_fixup_ionodes(void)
@@ -246,8 +283,19 @@ static void sn_fixup_ionodes(void)
 									widget,
 								       	device,
 						      (u64)(dev_entry->common));
-				if (status)
-					BUG();
+				if (status) {
+					if (sn_sal_rev() < 0x0450) {
+						/* shortlived WAR for older
+						 * PROM images
+						 */
+						sn_device_fixup_war(nasid,
+								    widget,
+								    device,
+							     dev_entry->common);
+					}
+					else
+						BUG();
+				}
 
 				spin_lock_init(&dev_entry->sfdl_flush_lock);
 			}

^ permalink raw reply related	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (39 preceding siblings ...)
  2006-01-20  0:03 ` Luck, Tony
@ 2006-02-09  0:36 ` Luck, Tony
  2006-02-10  0:56 ` Luck, Tony
                   ` (96 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-02-09  0:36 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/kernel/efi.c              |   16 +++-----------
 arch/ia64/kernel/head.S             |    1 
 arch/ia64/kernel/setup.c            |    4 +++
 arch/ia64/kernel/time.c             |   27 ++++++++++++++++++++++++
 arch/ia64/sn/kernel/mca.c           |    5 ++--
 arch/ia64/sn/kernel/setup.c         |   40 ++++++++++++++++++++++++------------
 arch/ia64/sn/kernel/sn2/sn_hwperf.c |    5 +++-
 7 files changed, 70 insertions(+), 28 deletions(-)

Jes Sorensen:
      [IA64] prevent sn2 specific code to be run in generic kernels

Tony Luck:
      [IA64] Fix CONFIG_PRINTK_TIME

Zou Nan hai:
      [IA64] Fix a possible buffer overflow in efi.c
      [IA64] Fix wrong use of memparse in efi.c

diff-tree f478af9dc58c01880832a321c3eea7703772c420 (from d6e56a2a088935f3c1feee5ff5a06c67f2ec6002)
Author: Jes Sorensen <jes@sgi.com>
Date:   Wed Feb 8 10:19:28 2006 -0500

    [IA64] prevent sn2 specific code to be run in generic kernels
    
    Prevent SN2 specific code to be executed on non SN2 platforms when
    running a generic kernel.
    
    Signed-off-by: Jes Sorensen <jes@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/sn/kernel/mca.c b/arch/ia64/sn/kernel/mca.c
index 9ab684d..3db62f2 100644
--- a/arch/ia64/sn/kernel/mca.c
+++ b/arch/ia64/sn/kernel/mca.c
@@ -3,7 +3,7 @@
  * License.  See the file "COPYING" in the main directory of this archive
  * for more details.
  *
- * Copyright (c) 2000-2004 Silicon Graphics, Inc.  All Rights Reserved.
+ * Copyright (c) 2000-2006 Silicon Graphics, Inc.  All Rights Reserved.
  */
 
 #include <linux/types.h>
@@ -137,7 +137,8 @@ int sn_salinfo_platform_oemdata(const u8
 
 static int __init sn_salinfo_init(void)
 {
-	salinfo_platform_oemdata = &sn_salinfo_platform_oemdata;
+	if (ia64_platform_is("sn2"))
+		salinfo_platform_oemdata = &sn_salinfo_platform_oemdata;
 	return 0;
 }
 
diff --git a/arch/ia64/sn/kernel/sn2/sn_hwperf.c b/arch/ia64/sn/kernel/sn2/sn_hwperf.c
index 19b54fb..70db21f 100644
--- a/arch/ia64/sn/kernel/sn2/sn_hwperf.c
+++ b/arch/ia64/sn/kernel/sn2/sn_hwperf.c
@@ -3,7 +3,7 @@
  * License.  See the file "COPYING" in the main directory of this archive
  * for more details.
  *
- * Copyright (C) 2004-2005 Silicon Graphics, Inc. All rights reserved.
+ * Copyright (C) 2004-2006 Silicon Graphics, Inc. All rights reserved.
  *
  * SGI Altix topology and hardware performance monitoring API.
  * Mark Goodwin <markgw@sgi.com>. 
@@ -973,6 +973,9 @@ static int __devinit sn_hwperf_misc_regi
 {
 	int e;
 
+	if (!ia64_platform_is("sn2"))
+		return 0;
+
 	sn_hwperf_init();
 
 	/*

diff-tree d6e56a2a088935f3c1feee5ff5a06c67f2ec6002 (from 9d78f43d1fd3e028bfd37510ce847d0896f71f78)
Author: Tony Luck <tony.luck@intel.com>
Date:   Tue Feb 7 15:25:57 2006 -0800

    [IA64] Fix CONFIG_PRINTK_TIME
    
    There were two problems with enabling the PRINTK_TIME config
    option:
    1) The first calls to printk() occur before per-cpu data virtual
    address is pinned into the TLB, so sched_clock() can fault.
    2) sched_clock() is based on ar.itc, which may not be synchronized
    across cpus.
    
    Ken Chen started this patch, Tony Luck tinkered with it, and Jes
    Sorensen perfected it.
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/head.S b/arch/ia64/kernel/head.S
index fbc7ea3..f1778a8 100644
--- a/arch/ia64/kernel/head.S
+++ b/arch/ia64/kernel/head.S
@@ -352,6 +352,7 @@ start_ap:
 	mov ar.rsc=0		// place RSE in enforced lazy mode
 	;;
 	loadrs			// clear the dirty partition
+	mov IA64_KR(PER_CPU_DATA)=r0	// clear physical per-CPU base
 	;;
 	mov ar.bspstore=r2	// establish the new RSE stack
 	;;
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c
index c076657..35f7835 100644
--- a/arch/ia64/kernel/setup.c
+++ b/arch/ia64/kernel/setup.c
@@ -71,6 +71,8 @@ unsigned long __per_cpu_offset[NR_CPUS];
 EXPORT_SYMBOL(__per_cpu_offset);
 #endif
 
+extern void ia64_setup_printk_clock(void);
+
 DEFINE_PER_CPU(struct cpuinfo_ia64, cpu_info);
 DEFINE_PER_CPU(unsigned long, local_per_cpu_offset);
 DEFINE_PER_CPU(unsigned long, ia64_phys_stacked_size_p8);
@@ -445,6 +447,8 @@ setup_arch (char **cmdline_p)
 	/* process SAL system table: */
 	ia64_sal_init(efi.sal_systab);
 
+	ia64_setup_printk_clock();
+
 #ifdef CONFIG_SMP
 	cpu_physical_id(0) = hard_smp_processor_id();
 
diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c
index 028a2b9..a094ec4 100644
--- a/arch/ia64/kernel/time.c
+++ b/arch/ia64/kernel/time.c
@@ -278,3 +278,30 @@ udelay (unsigned long usecs)
 	}
 }
 EXPORT_SYMBOL(udelay);
+
+static unsigned long long ia64_itc_printk_clock(void)
+{
+	if (ia64_get_kr(IA64_KR_PER_CPU_DATA))
+		return sched_clock();
+	return 0;
+}
+
+static unsigned long long ia64_default_printk_clock(void)
+{
+	return (unsigned long long)(jiffies_64 - INITIAL_JIFFIES) *
+		(1000000000/HZ);
+}
+
+unsigned long long (*ia64_printk_clock)(void) = &ia64_default_printk_clock;
+
+unsigned long long printk_clock(void)
+{
+	return ia64_printk_clock();
+}
+
+void __init
+ia64_setup_printk_clock(void)
+{
+	if (!(sal_platform_features & IA64_SAL_PLATFORM_FEATURE_ITC_DRIFT))
+		ia64_printk_clock = ia64_itc_printk_clock;
+}
diff --git a/arch/ia64/sn/kernel/setup.c b/arch/ia64/sn/kernel/setup.c
index ee36bff..6ea5b8a 100644
--- a/arch/ia64/sn/kernel/setup.c
+++ b/arch/ia64/sn/kernel/setup.c
@@ -67,6 +67,7 @@ extern unsigned long last_time_offset;
 extern void (*ia64_mark_idle) (int);
 extern void snidle(int);
 extern unsigned char acpi_kbd_controller_present;
+extern unsigned long long (*ia64_printk_clock)(void);
 
 unsigned long sn_rtc_cycles_per_second;
 EXPORT_SYMBOL(sn_rtc_cycles_per_second);
@@ -372,6 +373,16 @@ sn_scan_pcdp(void)
 	}
 }
 
+static unsigned long sn2_rtc_initial;
+
+static unsigned long long ia64_sn2_printk_clock(void)
+{
+	unsigned long rtc_now = rtc_time();
+
+	return (rtc_now - sn2_rtc_initial) *
+		(1000000000 / sn_rtc_cycles_per_second);
+}
+
 /**
  * sn_setup - SN platform setup routine
  * @cmdline_p: kernel command line
@@ -386,6 +397,7 @@ void __init sn_setup(char **cmdline_p)
 	u32 version = sn_sal_rev();
 	extern void sn_cpu_init(void);
 
+	sn2_rtc_initial = rtc_time();
 	ia64_sn_plat_set_error_handling_features();	// obsolete
 	ia64_sn_set_os_feature(OSF_MCA_SLV_TO_OS_INIT_SLV);
 	ia64_sn_set_os_feature(OSF_FEAT_LOG_SBES);
@@ -437,19 +449,6 @@ void __init sn_setup(char **cmdline_p)
 	 */
 	build_cnode_tables();
 
-	/*
-	 * Old PROMs do not provide an ACPI FADT. Disable legacy keyboard
-	 * support here so we don't have to listen to failed keyboard probe
-	 * messages.
-	 */
-	if (version <= 0x0209 && acpi_kbd_controller_present) {
-		printk(KERN_INFO "Disabling legacy keyboard support as prom "
-		       "is too old and doesn't provide FADT\n");
-		acpi_kbd_controller_present = 0;
-	}
-
-	printk("SGI SAL version %x.%02x\n", version >> 8, version & 0x00FF);
-
 	status  	    ia64_sal_freq_base(SAL_FREQ_BASE_REALTIME_CLOCK, &ticks_per_sec,
 			       &drift);
@@ -463,6 +462,21 @@ void __init sn_setup(char **cmdline_p)
 
 	platform_intr_list[ACPI_INTERRUPT_CPEI] = IA64_CPE_VECTOR;
 
+	ia64_printk_clock = ia64_sn2_printk_clock;
+
+	/*
+	 * Old PROMs do not provide an ACPI FADT. Disable legacy keyboard
+	 * support here so we don't have to listen to failed keyboard probe
+	 * messages.
+	 */
+	if (version <= 0x0209 && acpi_kbd_controller_present) {
+		printk(KERN_INFO "Disabling legacy keyboard support as prom "
+		       "is too old and doesn't provide FADT\n");
+		acpi_kbd_controller_present = 0;
+	}
+
+	printk("SGI SAL version %x.%02x\n", version >> 8, version & 0x00FF);
+
 	/*
 	 * we set the default root device to /dev/hda
 	 * to make simulation easy

diff-tree 9d78f43d1fd3e028bfd37510ce847d0896f71f78 (from ecdd5dabd33d67066d476467e447cdcadab90550)
Author: Zou Nan hai <nanhai.zou@intel.com>
Date:   Tue Feb 7 11:35:46 2006 +0800

    [IA64] Fix wrong use of memparse in efi.c
    
    The check of (end != cp) after memparse in efi.c looks wrong to me.
    The result is that we can't use mem= and max_addr= kernel parameter at
    the same time.
    
    The following patch removed the check just like other arches do.
    
    Signed-off-by: Zou Nan hai <nanhai.zou@intel.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c
index d51c2f2..9990320 100644
--- a/arch/ia64/kernel/efi.c
+++ b/arch/ia64/kernel/efi.c
@@ -410,24 +410,16 @@ efi_init (void)
 	efi_config_table_t *config_tables;
 	efi_char16_t *c16;
 	u64 efi_desc_size;
-	char *cp, *end, vendor[100] = "unknown";
+	char *cp, vendor[100] = "unknown";
 	extern char saved_command_line[];
 	int i;
 
 	/* it's too early to be able to use the standard kernel command line support... */
 	for (cp = saved_command_line; *cp; ) {
 		if (memcmp(cp, "mem=", 4) = 0) {
-			cp += 4;
-			mem_limit = memparse(cp, &end);
-			if (end != cp)
-				break;
-			cp = end;
+			mem_limit = memparse(cp + 4, &cp);
 		} else if (memcmp(cp, "max_addr=", 9) = 0) {
-			cp += 9;
-			max_addr = GRANULEROUNDDOWN(memparse(cp, &end));
-			if (end != cp)
-				break;
-			cp = end;
+			max_addr = GRANULEROUNDDOWN(memparse(cp + 9, &cp));
 		} else {
 			while (*cp != ' ' && *cp)
 				++cp;

diff-tree ecdd5dabd33d67066d476467e447cdcadab90550 (from d43da75fd6be4197c280903e1553eafcc39218e2)
Author: Zou Nan hai <nanhai.zou@intel.com>
Date:   Tue Feb 7 11:25:55 2006 +0800

    [IA64] Fix a possible buffer overflow in efi.c
    
    Make sure to save space for the trailing '\0'.
    
    Signed-off-by: Zou Nan hai <nanhai.zou@intel.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c
index c485a3b..d51c2f2 100644
--- a/arch/ia64/kernel/efi.c
+++ b/arch/ia64/kernel/efi.c
@@ -458,7 +458,7 @@ efi_init (void)
 	/* Show what we know for posterity */
 	c16 = __va(efi.systab->fw_vendor);
 	if (c16) {
-		for (i = 0;i < (int) sizeof(vendor) && *c16; ++i)
+		for (i = 0;i < (int) sizeof(vendor) - 1 && *c16; ++i)
 			vendor[i] = *c16++;
 		vendor[i] = '\0';
 	}

^ permalink raw reply related	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (40 preceding siblings ...)
  2006-02-09  0:36 ` Luck, Tony
@ 2006-02-10  0:56 ` Luck, Tony
  2006-02-17  0:13 ` Luck, Tony
                   ` (95 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-02-10  0:56 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

New syscalls for ia64, plus four miscellaneous bug fixes.

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/ia32/ia32_signal.c  |    1 +
 arch/ia64/kernel/entry.S      |   16 ++++++++++++++++
 arch/ia64/kernel/fsys.S       |   29 +++--------------------------
 arch/ia64/kernel/mca_drv.c    |    3 +++
 arch/ia64/sn/kernel/io_init.c |    8 ++++----
 arch/ia64/sn/kernel/irq.c     |    4 +++-
 include/asm-ia64/unistd.h     |   17 ++++++++++++++++-
 7 files changed, 46 insertions(+), 32 deletions(-)

Chen, Kenneth W:
      [IA64] add syscall entry for *at()

Hidetoshi Seto:
      [IA64] mca_drv: Add minstate validation

Janak Desai:
      [IA64] unshare system call registration for ia64

Prarit Bhargava:
      [IA64-SGI] Hotplug driver related fix in the SN ia64 code.
      [IA64-SGI] Small cleanup for misuse of list_for_each to list_for_each_safe.

Tony Luck:
      [IA64] sys32_signal() forgets to initialize ->sa_mask


diff-tree a94746461765dae41fb82e4dac027d14af4d80d8 (from 1ff0be1534839dabec85f6d16dc36734f4e158bf)
Author: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
Date:   Thu Feb 9 14:42:55 2006 -0800

    [IA64] mca_drv: Add minstate validation
    
    MCA driver can cause panic if kernel gets a state info with no minstate.
    This patch adds minstate validation before handling it.
    
    Signed-off-by: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/mca_drv.c b/arch/ia64/kernel/mca_drv.c
index 3492e32..8fd93af 100644
--- a/arch/ia64/kernel/mca_drv.c
+++ b/arch/ia64/kernel/mca_drv.c
@@ -437,6 +437,9 @@ recover_from_read_error(slidx_table_t *s
 	 *    the process not have any locks of kernel.
 	 */
 
+	/* Is minstate valid? */
+	if (!peidx_bottom(peidx) || !(peidx_bottom(peidx)->valid.minstate))
+		return 0;
 	psr1 =(struct ia64_psr *)&(peidx_minstate_area(peidx)->pmsa_ipsr);
 
 	/*

diff-tree 1ff0be1534839dabec85f6d16dc36734f4e158bf (from b6bb761897d3b0225fa9d61fc4782b02bab9a6e1)
Author: Tony Luck <tony.luck@intel.com>
Date:   Thu Feb 9 14:41:41 2006 -0800

    [IA64] sys32_signal() forgets to initialize ->sa_mask
    
    Pointed out by Oleg Nesterov <oleg@tv-sign.ru>, who in turn
    got the hint from Linus.
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/ia32/ia32_signal.c b/arch/ia64/ia32/ia32_signal.c
index 5856510..b3355a9 100644
--- a/arch/ia64/ia32/ia32_signal.c
+++ b/arch/ia64/ia32/ia32_signal.c
@@ -515,6 +515,7 @@ sys32_signal (int sig, unsigned int hand
 
 	sigact_set_handler(&new_sa, handler, 0);
 	new_sa.sa.sa_flags = SA_ONESHOT | SA_NOMASK;
+	sigemptyset(&new_sa.sa.sa_mask);
 
 	ret = do_sigaction(sig, &new_sa, &old_sa);
 

diff-tree b6bb761897d3b0225fa9d61fc4782b02bab9a6e1 (from 8b34ff427d6f3b0a1207829350b9db16376f88c5)
Author: Prarit Bhargava <prarit@sgi.com>
Date:   Thu Feb 9 14:14:52 2006 -0800

    [IA64-SGI] Small cleanup for misuse of list_for_each to list_for_each_safe.
    
    Patch was suggested by Kenneth W. Chen here
    
    Signed-off-by: Prarit Bhargava <prarit@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/sn/kernel/io_init.c b/arch/ia64/sn/kernel/io_init.c
index 2e4e56b..3437c23 100644
--- a/arch/ia64/sn/kernel/io_init.c
+++ b/arch/ia64/sn/kernel/io_init.c
@@ -617,17 +617,15 @@ void sn_bus_store_sysdata(struct pci_dev
 void sn_bus_free_sysdata(void)
 {
 	struct sysdata_el *element;
-	struct list_head *list;
+	struct list_head *list, *safe;
 
-sn_sysdata_free_start:
-	list_for_each(list, &sn_sysdata_list) {
+	list_for_each_safe(list, safe, &sn_sysdata_list) {
 		element = list_entry(list, struct sysdata_el, entry);
 		list_del(&element->entry);
 		list_del(&(((struct pcidev_info *)
 			     (element->sysdata))->pdi_list));
 		kfree(element->sysdata);
 		kfree(element);
-		goto sn_sysdata_free_start;
 	}
 	return;
 }

diff-tree 8b34ff427d6f3b0a1207829350b9db16376f88c5 (from 0bdd340c092b0936f78a54bdbd3927463ed4fca3)
Author: Prarit Bhargava <prarit@sgi.com>
Date:   Thu Feb 9 14:12:24 2006 -0800

    [IA64-SGI] Hotplug driver related fix in the SN ia64 code.
    
    Remove an erroneous kfree, and unlink the pcidev_info struct from the
    pcidev_info list prior to free'ing the pcidev_info struct.
    
    Signed-off-by: Prarit Bhargava <prarit@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/sn/kernel/io_init.c b/arch/ia64/sn/kernel/io_init.c
index d7e4d79..2e4e56b 100644
--- a/arch/ia64/sn/kernel/io_init.c
+++ b/arch/ia64/sn/kernel/io_init.c
@@ -623,6 +623,8 @@ sn_sysdata_free_start:
 	list_for_each(list, &sn_sysdata_list) {
 		element = list_entry(list, struct sysdata_el, entry);
 		list_del(&element->entry);
+		list_del(&(((struct pcidev_info *)
+			     (element->sysdata))->pdi_list));
 		kfree(element->sysdata);
 		kfree(element);
 		goto sn_sysdata_free_start;
diff --git a/arch/ia64/sn/kernel/irq.c b/arch/ia64/sn/kernel/irq.c
index 74d87d9..c373113 100644
--- a/arch/ia64/sn/kernel/irq.c
+++ b/arch/ia64/sn/kernel/irq.c
@@ -299,7 +299,9 @@ void sn_irq_unfixup(struct pci_dev *pci_
 		return;
 
 	sn_irq_info = SN_PCIDEV_INFO(pci_dev)->pdi_sn_irq_info;
-	if (!sn_irq_info || !sn_irq_info->irq_irq) {
+	if (!sn_irq_info)
+		return;
+	if (!sn_irq_info->irq_irq) {
 		kfree(sn_irq_info);
 		return;
 	}

diff-tree 9621a4ef8a29d11118f44def053931bcafb0dfc2 (from 9ed2ad8648eb974ee670045d41b5a51b763e3aa1)
Author: Janak Desai <janak@us.ibm.com>
Date:   Wed Feb 8 15:43:38 2006 -0800

    [IA64] unshare system call registration for ia64
    
    Registers system call for the ia64 architecture.
    
    Reserves space for ppoll and pselect, and adds unshare at system
    call number 1296.
    
    Signed-off-by: Janak Desai <janak@us.ibm.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S
index 6b88de8..27b222c 100644
--- a/arch/ia64/kernel/entry.S
+++ b/arch/ia64/kernel/entry.S
@@ -1614,5 +1614,8 @@ sys_call_table:
 	data8 sys_readlinkat
 	data8 sys_fchmodat
 	data8 sys_faccessat
+	data8 sys_ni_syscall			// reserved for pselect
+	data8 sys_ni_syscall			// 1295 reserved for ppoll
+	data8 sys_unshare
 
 	.org sys_call_table + 8*NR_syscalls	// guard against failures to increase NR_syscalls
diff --git a/include/asm-ia64/unistd.h b/include/asm-ia64/unistd.h
index a151eb1..019956c 100644
--- a/include/asm-ia64/unistd.h
+++ b/include/asm-ia64/unistd.h
@@ -283,12 +283,14 @@
 #define __NR_readlinkat			1291
 #define __NR_fchmodat			1292
 #define __NR_faccessat			1293
+/* 1294, 1295 reserved for pselect/ppoll */
+#define __NR_unshare			1296
 
 #ifdef __KERNEL__
 
 #include <linux/config.h>
 
-#define NR_syscalls			270 /* length of syscall table */
+#define NR_syscalls			273 /* length of syscall table */
 
 #define __ARCH_WANT_SYS_RT_SIGACTION
 

diff-tree 9ed2ad8648eb974ee670045d41b5a51b763e3aa1 (from e3f749c4af69c4344d89f11e2293e3790eb4eaca)
Author: Chen, Kenneth W <kenneth.w.chen@intel.com>
Date:   Tue Jan 31 14:26:25 2006 -0800

    [IA64] add syscall entry for *at()
    
    Wire up the ia64 syscalls for *at() functions.
    
    Signed-off-by: Ken Chen <kenneth.w.chen@intel.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S
index 7a6ffd6..6b88de8 100644
--- a/arch/ia64/kernel/entry.S
+++ b/arch/ia64/kernel/entry.S
@@ -1601,5 +1601,18 @@ sys_call_table:
 	data8 sys_inotify_add_watch
 	data8 sys_inotify_rm_watch
 	data8 sys_migrate_pages			// 1280
+	data8 sys_openat
+	data8 sys_mkdirat
+	data8 sys_mknodat
+	data8 sys_fchownat
+	data8 sys_futimesat			// 1285
+	data8 sys_newfstatat
+	data8 sys_unlinkat
+	data8 sys_renameat
+	data8 sys_linkat
+	data8 sys_symlinkat			// 1290
+	data8 sys_readlinkat
+	data8 sys_fchmodat
+	data8 sys_faccessat
 
 	.org sys_call_table + 8*NR_syscalls	// guard against failures to increase NR_syscalls
diff --git a/arch/ia64/kernel/fsys.S b/arch/ia64/kernel/fsys.S
index ce42391..ac6055c 100644
--- a/arch/ia64/kernel/fsys.S
+++ b/arch/ia64/kernel/fsys.S
@@ -878,31 +878,8 @@ fsyscall_table:
 	data8 0				// timer_delete
 	data8 0				// clock_settime
 	data8 fsys_clock_gettime	// clock_gettime
-	data8 0				// clock_getres		// 1255
-	data8 0				// clock_nanosleep
-	data8 0				// fstatfs64
-	data8 0				// statfs64
-	data8 0
-	data8 0							// 1260
-	data8 0
-	data8 0				// mq_open
-	data8 0				// mq_unlink
-	data8 0				// mq_timedsend
-	data8 0				// mq_timedreceive	// 1265
-	data8 0				// mq_notify
-	data8 0				// mq_getsetattr
-	data8 0				// kexec_load
-	data8 0
-	data8 0							// 1270
-	data8 0
-	data8 0
-	data8 0
-	data8 0
-	data8 0							// 1275
-	data8 0
-	data8 0
-	data8 0
-	data8 0
-	data8 0							// 1280
+	#define __NR_syscall_last	1255
+
+	.space 8*(NR_syscalls + 1024 - __NR_syscall_last), 0
 
 	.org fsyscall_table + 8*NR_syscalls	// guard against failures to increase NR_syscalls
diff --git a/include/asm-ia64/unistd.h b/include/asm-ia64/unistd.h
index 962f9bd..a151eb1 100644
--- a/include/asm-ia64/unistd.h
+++ b/include/asm-ia64/unistd.h
@@ -270,6 +270,19 @@
 #define __NR_inotify_add_watch		1278
 #define __NR_inotify_rm_watch		1279
 #define __NR_migrate_pages		1280
+#define __NR_openat			1281
+#define __NR_mkdirat			1282
+#define __NR_mknodat			1283
+#define __NR_fchownat			1284
+#define __NR_futimesat			1285
+#define __NR_newfstatat			1286
+#define __NR_unlinkat			1287
+#define __NR_renameat			1288
+#define __NR_linkat			1289
+#define __NR_symlinkat			1290
+#define __NR_readlinkat			1291
+#define __NR_fchmodat			1292
+#define __NR_faccessat			1293
 
 #ifdef __KERNEL__
 

^ permalink raw reply related	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (41 preceding siblings ...)
  2006-02-10  0:56 ` Luck, Tony
@ 2006-02-17  0:13 ` Luck, Tony
  2006-02-28 19:03 ` Luck, Tony
                   ` (94 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-02-17  0:13 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

More ia64 bugfixes and cleanups for 2.6.16.  Special notes:
1) The drivers/ide/pci/sgiioc4.c change is just deleting an out of date
   address for SGI from a comment.
2) In the shortlog it looks like I have two identical commits from Ashok.
   The second is actually a minor update to the first, but I forgot to
   edit the first line of the commit comment.

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 Documentation/cpu-hotplug.txt             |   14 +++-
 arch/ia64/kernel/acpi.c                   |   75 +++++++++++++++++++----
 arch/ia64/kernel/entry.S                  |    4 -
 arch/ia64/kernel/ia64_ksyms.c             |   15 ----
 arch/ia64/kernel/setup.c                  |    4 +
 arch/ia64/kernel/smpboot.c                |    5 -
 arch/ia64/kernel/time.c                   |   39 +++++-------
 arch/ia64/kernel/traps.c                  |    8 ++
 arch/ia64/sn/kernel/io_init.c             |   97 ++++++++++++------------------
 arch/ia64/sn/kernel/setup.c               |    4 -
 arch/ia64/sn/kernel/sn2/prominfo_proc.c   |   25 ++++---
 arch/ia64/sn/kernel/sn2/sn2_smp.c         |   35 +++++-----
 arch/ia64/sn/kernel/sn2/sn_proc_fs.c      |   22 +++---
 arch/ia64/sn/kernel/sn2/timer.c           |   19 +++++
 arch/ia64/sn/kernel/sn2/timer_interrupt.c |    7 --
 arch/ia64/sn/kernel/tiocx.c               |    4 -
 arch/ia64/sn/kernel/xpc_channel.c         |    8 +-
 arch/ia64/sn/kernel/xpc_main.c            |   20 ++++--
 arch/ia64/sn/pci/pci_dma.c                |   16 ++--
 arch/ia64/sn/pci/pcibr/pcibr_ate.c        |   29 ++------
 arch/ia64/sn/pci/pcibr/pcibr_dma.c        |   14 +---
 arch/ia64/sn/pci/pcibr/pcibr_provider.c   |    9 +-
 drivers/ide/pci/sgiioc4.c                 |    5 -
 include/asm-ia64/acpi.h                   |    2 
 include/asm-ia64/machvec_sn2.h            |    7 --
 include/asm-ia64/sn/arch.h                |    2 
 include/asm-ia64/sn/bte.h                 |    6 -
 include/asm-ia64/sn/pcibr_provider.h      |   14 ----
 include/asm-ia64/sn/sn_feature_sets.h     |    3 
 include/asm-ia64/sn/xpc.h                 |   31 +++++----
 include/asm-ia64/timex.h                  |    2 
 31 files changed, 286 insertions(+), 259 deletions(-)

Andreas Schwab:
      [IA64] Remove duplicate EXPORT_SYMBOLs

Ashok Raj:
      [IA64] Dont set NR_CPUS for cpu_possible_map when CPU hotplug is enabled.
      [IA64] Count disabled cpus as potential hot-pluggable CPUs
      [IA64] Count disabled cpus as potential hot-pluggable CPUs

Dean Nelson:
      [IA64-SGI] enforce proper ordering of callouts by XPC

Dean Roe:
      [IA64-SGI] fix the size of __sn_cnodeid_to_nasid

hawkes@sgi.com:
      [IA64] ia64: simplify and fix udelay()

Horms:
      [IA64] support panic_on_oops sysctl

Jack Steiner:
      [IA64] Missing check for TIF_WORK if trace/audit enabled

Jes Sorensen:
      [IA64-SGI] sn2 minor fixes and cleanups
      [IA64] remove obsolete corporate address
      [IA64-SGI] remove compile time warning

Mark Maule:
      [IA64-SGI] export sn_pcidev_info_get


diff-tree 8f8b1138fc9f65e3591aac83a4ee394fef34ac1d (from 6f6d75825dc49b082906b84537b4df28293c2977)
Author: Ashok Raj <ashok.raj@intel.com>
Date:   Thu Feb 16 14:01:48 2006 -0800

    [IA64] Count disabled cpus as potential hot-pluggable CPUs
    
    Minor updates to earlier patch.
    - Added to documentation to add ia64 as well.
    - Minor clarification on how to use disabled cpus
    - used plain max instead of max_t per Andew Morton.
    
    Signed-off-by: Ashok Raj <ashok.raj@intel.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/Documentation/cpu-hotplug.txt b/Documentation/cpu-hotplug.txt
index 08c5d04..e052780 100644
--- a/Documentation/cpu-hotplug.txt
+++ b/Documentation/cpu-hotplug.txt
@@ -44,10 +44,20 @@ maxcpus=n    Restrict boot time cpus to 
              maxcpus=2 will only boot 2. You can choose to bring the
              other cpus later online, read FAQ's for more info.
 
-additional_cpus=n	[x86_64 only] use this to limit hotpluggable cpus.
-                        This option sets
+additional_cpus*=n	Use this to limit hotpluggable cpus. This option sets
 			cpu_possible_map = cpu_present_map + additional_cpus
 
+(*) Option valid only for following architectures
+- x86_64, ia64
+
+ia64 and x86_64 use the number of disabled local apics in ACPI tables MADT
+to determine the number of potentially hot-pluggable cpus. The implementation
+should only rely on this to count the #of cpus, but *MUST* not rely on the
+apicid values in those tables for disabled apics. In the event BIOS doesnt
+mark such hot-pluggable cpus as disabled entries, one could use this
+parameter "additional_cpus=x" to represent those cpus in the cpu_possible_map.
+
+
 CPU maps and such
 -----------------
 [More on cpumaps and primitive to manipulate, please check
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
index 34795ed..ecd44bd 100644
--- a/arch/ia64/kernel/acpi.c
+++ b/arch/ia64/kernel/acpi.c
@@ -794,24 +794,21 @@ __init void prefill_possible_map(void)
 	int possible, disabled_cpus;
 
 	disabled_cpus = total_cpus - available_cpus;
+
  	if (additional_cpus = -1) {
- 		if (disabled_cpus > 0) {
- 			possible = total_cpus;
+ 		if (disabled_cpus > 0)
 			additional_cpus = disabled_cpus;
-		}
- 		else {
-			possible = available_cpus;
+ 		else
 			additional_cpus = 0;
-		}
- 	} else {
-		possible = available_cpus + additional_cpus;
-	}
+ 	}
+
+	possible = available_cpus + additional_cpus;
+
 	if (possible > NR_CPUS)
 		possible = NR_CPUS;
 
 	printk(KERN_INFO "SMP: Allowing %d CPUs, %d hotplug CPUs\n",
-		possible,
-	        max_t(int, additional_cpus, 0));
+		possible, max((possible - available_cpus), 0));
 
 	for (i = 0; i < possible; i++)
 		cpu_set(i, cpu_possible_map);

diff-tree 6f6d75825dc49b082906b84537b4df28293c2977 (from 72166c35f0e15e5081e51304de48e73f8fdf5498)
Author: Jack Steiner <steiner@sgi.com>
Date:   Wed Feb 15 19:46:50 2006 -0600

    [IA64] Missing check for TIF_WORK if trace/audit enabled
    
    It appears that if auditing is enabled, the kernel fails to
    check for pending signals before returning to user mode.
    
    Signed-off-by: Jack Steiner <steiner@sgi.com>
    Acked-by: Ken Chen <kenneth.w.chen@intel.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S
index 27b222c..930fdfc 100644
--- a/arch/ia64/kernel/entry.S
+++ b/arch/ia64/kernel/entry.S
@@ -569,7 +569,9 @@ GLOBAL_ENTRY(ia64_trace_syscall)
 .mem.offset 0,0; st8.spill [r2]=r8		// store return value in slot for r8
 .mem.offset 8,0; st8.spill [r3]=r10		// clear error indication in slot for r10
 	br.call.sptk.many rp=syscall_trace_leave // give parent a chance to catch return value
-.ret3:	br.cond.sptk .work_pending_syscall_end
+.ret3:
+(pUStk)	cmp.eq.unc p6,p0=r0,r0			// p6 <- pUStk
+	br.cond.sptk .work_pending_syscall_end
 
 strace_error:
 	ld8 r3=[r2]				// load pt_regs.r8

diff-tree b05de01ae1c76b7d61da21bbcc26345bf7a9052f (from defbb2c929cbe89dc92239b303cd33d3c85e9a83)
Author: Horms <horms@verge.net.au>
Date:   Wed Feb 15 17:23:09 2006 +0900

    [IA64] support panic_on_oops sysctl
    
    Trivial port of this feature from i386
    As it stands, panic_on_oops but does nothing on ia64
    
    Signed-Off-By: Horms <horms@verge.net.au>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/traps.c b/arch/ia64/kernel/traps.c
index 5539190..dabd6c3 100644
--- a/arch/ia64/kernel/traps.c
+++ b/arch/ia64/kernel/traps.c
@@ -16,6 +16,7 @@
 #include <linux/module.h>       /* for EXPORT_SYMBOL */
 #include <linux/hardirq.h>
 #include <linux/kprobes.h>
+#include <linux/delay.h>		/* for ssleep() */
 
 #include <asm/fpswa.h>
 #include <asm/ia32.h>
@@ -116,6 +117,13 @@ die (const char *str, struct pt_regs *re
 	bust_spinlocks(0);
 	die.lock_owner = -1;
 	spin_unlock_irq(&die.lock);
+
+	if (panic_on_oops) {
+		printk(KERN_EMERG "Fatal exception: panic in 5 seconds\n");
+		ssleep(5);
+		panic("Fatal exception");
+	}
+
   	do_exit(SIGSEGV);
 }
 

diff-tree defbb2c929cbe89dc92239b303cd33d3c85e9a83 (from 4c2cd96696ae0896ce4bcf725b9f0eaffafeb640)
Author: hawkes@sgi.com <hawkes@sgi.com>
Date:   Tue Feb 14 10:40:17 2006 -0800

    [IA64] ia64: simplify and fix udelay()
    
    The original ia64 udelay() was simple, but flawed for platforms without
    synchronized ITCs:  a preemption and migration to another CPU during the
    while-loop likely resulted in too-early termination or very, very
    lengthy looping.
    
    The first fix (now in 2.6.15) broke the delay loop into smaller,
    non-preemptible chunks, reenabling preemption between the chunks.  This
    fix is flawed in that the total udelay is computed to be the sum of just
    the non-premptible while-loop pieces, i.e., not counting the time spent
    in the interim preemptible periods.  If an interrupt or a migration
    occurs during one of these interim periods, then that time is invisible
    and only serves to lengthen the effective udelay().
    
    This new fix backs out the current flawed fix and returns to a simple
    udelay(), fully preemptible and interruptible.  It implements two simple
    alternative udelay() routines:  one a default generic version that uses
    ia64_get_itc(), and the other an sn-specific version that uses that
    platform's RTC.
    
    Signed-off-by: John Hawkes <hawkes@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c
index a094ec4..307d01e 100644
--- a/arch/ia64/kernel/time.c
+++ b/arch/ia64/kernel/time.c
@@ -250,32 +250,27 @@ time_init (void)
 	set_normalized_timespec(&wall_to_monotonic, -xtime.tv_sec, -xtime.tv_nsec);
 }
 
-#define SMALLUSECS 100
+/*
+ * Generic udelay assumes that if preemption is allowed and the thread
+ * migrates to another CPU, that the ITC values are synchronized across
+ * all CPUs.
+ */
+static void
+ia64_itc_udelay (unsigned long usecs)
+{
+	unsigned long start = ia64_get_itc();
+	unsigned long end = start + usecs*local_cpu_data->cyc_per_usec;
+
+	while (time_before(ia64_get_itc(), end))
+		cpu_relax();
+}
+
+void (*ia64_udelay)(unsigned long usecs) = &ia64_itc_udelay;
 
 void
 udelay (unsigned long usecs)
 {
-	unsigned long start;
-	unsigned long cycles;
-	unsigned long smallusecs;
-
-	/*
-	 * Execute the non-preemptible delay loop (because the ITC might
-	 * not be synchronized between CPUS) in relatively short time
-	 * chunks, allowing preemption between the chunks.
-	 */
-	while (usecs > 0) {
-		smallusecs = (usecs > SMALLUSECS) ? SMALLUSECS : usecs;
-		preempt_disable();
-		cycles = smallusecs*local_cpu_data->cyc_per_usec;
-		start = ia64_get_itc();
-
-		while (ia64_get_itc() - start < cycles)
-			cpu_relax();
-
-		preempt_enable();
-		usecs -= smallusecs;
-	}
+	(*ia64_udelay)(usecs);
 }
 EXPORT_SYMBOL(udelay);
 
diff --git a/arch/ia64/sn/kernel/sn2/timer.c b/arch/ia64/sn/kernel/sn2/timer.c
index deb9baf..56a88b6 100644
--- a/arch/ia64/sn/kernel/sn2/timer.c
+++ b/arch/ia64/sn/kernel/sn2/timer.c
@@ -14,6 +14,7 @@
 
 #include <asm/hw_irq.h>
 #include <asm/system.h>
+#include <asm/timex.h>
 
 #include <asm/sn/leds.h>
 #include <asm/sn/shub_mmr.h>
@@ -28,9 +29,27 @@ static struct time_interpolator sn2_inte
 	.source = TIME_SOURCE_MMIO64
 };
 
+/*
+ * sn udelay uses the RTC instead of the ITC because the ITC is not
+ * synchronized across all CPUs, and the thread may migrate to another CPU
+ * if preemption is enabled.
+ */
+static void
+ia64_sn_udelay (unsigned long usecs)
+{
+	unsigned long start = rtc_time();
+	unsigned long end = start +
+			usecs * sn_rtc_cycles_per_second / 1000000;
+
+	while (time_before((unsigned long)rtc_time(), end))
+		cpu_relax();
+}
+
 void __init sn_timer_init(void)
 {
 	sn2_interpolator.frequency = sn_rtc_cycles_per_second;
 	sn2_interpolator.addr = RTC_COUNTER_ADDR;
 	register_time_interpolator(&sn2_interpolator);
+
+	ia64_udelay = &ia64_sn_udelay;
 }
diff --git a/include/asm-ia64/timex.h b/include/asm-ia64/timex.h
index 414aae0..05a6baf 100644
--- a/include/asm-ia64/timex.h
+++ b/include/asm-ia64/timex.h
@@ -15,6 +15,8 @@
 
 typedef unsigned long cycles_t;
 
+extern void (*ia64_udelay)(unsigned long usecs);
+
 /*
  * For performance reasons, we don't want to define CLOCK_TICK_TRATE as
  * local_cpu_data->itc_rate.  Fortunately, we don't have to, either: according to George

diff-tree 4c2cd96696ae0896ce4bcf725b9f0eaffafeb640 (from c2a4969ba14e852bf4ee92c7db3b0cf82405a0c9)
Author: Dean Nelson <dcn@sgi.com>
Date:   Wed Feb 15 08:02:21 2006 -0600

    [IA64-SGI] enforce proper ordering of callouts by XPC
    
    Fix XPC so that it does not deliver any messages until the connected
    callout has returned, as well as, prevent the disconnected callout to
    occur before the disconnecting callout has returned.
    
    Signed-off-by: Dean Nelson <dcn@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/sn/kernel/xpc_channel.c b/arch/ia64/sn/kernel/xpc_channel.c
index 36e5437..cdf6856 100644
--- a/arch/ia64/sn/kernel/xpc_channel.c
+++ b/arch/ia64/sn/kernel/xpc_channel.c
@@ -738,7 +738,9 @@ xpc_process_disconnect(struct xpc_channe
 
 	/* make sure all activity has settled down first */
 
-	if (atomic_read(&ch->references) > 0) {
+	if (atomic_read(&ch->references) > 0 ||
+			((ch->flags & XPC_C_CONNECTEDCALLOUT_MADE) &&
+			!(ch->flags & XPC_C_DISCONNECTINGCALLOUT_MADE))) {
 		return;
 	}
 	DBUG_ON(atomic_read(&ch->kthreads_assigned) != 0);
@@ -775,7 +777,7 @@ xpc_process_disconnect(struct xpc_channe
 
 	/* both sides are disconnected now */
 
-	if (ch->flags & XPC_C_CONNECTCALLOUT) {
+	if (ch->flags & XPC_C_DISCONNECTINGCALLOUT_MADE) {
 		spin_unlock_irqrestore(&ch->lock, *irq_flags);
 		xpc_disconnect_callout(ch, xpcDisconnected);
 		spin_lock_irqsave(&ch->lock, *irq_flags);
@@ -1300,7 +1302,7 @@ xpc_process_msg_IPI(struct xpc_partition
 				"delivered=%d, partid=%d, channel=%d\n",
 				nmsgs_sent, ch->partid, ch->number);
 
-			if (ch->flags & XPC_C_CONNECTCALLOUT) {
+			if (ch->flags & XPC_C_CONNECTEDCALLOUT_MADE) {
 				xpc_activate_kthreads(ch, nmsgs_sent);
 			}
 		}
diff --git a/arch/ia64/sn/kernel/xpc_main.c b/arch/ia64/sn/kernel/xpc_main.c
index 9cd460d..8cbf164 100644
--- a/arch/ia64/sn/kernel/xpc_main.c
+++ b/arch/ia64/sn/kernel/xpc_main.c
@@ -750,12 +750,16 @@ xpc_daemonize_kthread(void *args)
 		/* let registerer know that connection has been established */
 
 		spin_lock_irqsave(&ch->lock, irq_flags);
-		if (!(ch->flags & XPC_C_CONNECTCALLOUT)) {
-			ch->flags |= XPC_C_CONNECTCALLOUT;
+		if (!(ch->flags & XPC_C_CONNECTEDCALLOUT)) {
+			ch->flags |= XPC_C_CONNECTEDCALLOUT;
 			spin_unlock_irqrestore(&ch->lock, irq_flags);
 
 			xpc_connected_callout(ch);
 
+			spin_lock_irqsave(&ch->lock, irq_flags);
+			ch->flags |= XPC_C_CONNECTEDCALLOUT_MADE;
+			spin_unlock_irqrestore(&ch->lock, irq_flags);
+
 			/*
 			 * It is possible that while the callout was being
 			 * made that the remote partition sent some messages.
@@ -777,15 +781,17 @@ xpc_daemonize_kthread(void *args)
 
 	if (atomic_dec_return(&ch->kthreads_assigned) = 0) {
 		spin_lock_irqsave(&ch->lock, irq_flags);
-		if ((ch->flags & XPC_C_CONNECTCALLOUT) &&
-				!(ch->flags & XPC_C_DISCONNECTCALLOUT)) {
-			ch->flags |= XPC_C_DISCONNECTCALLOUT;
+		if ((ch->flags & XPC_C_CONNECTEDCALLOUT_MADE) &&
+				!(ch->flags & XPC_C_DISCONNECTINGCALLOUT)) {
+			ch->flags |= XPC_C_DISCONNECTINGCALLOUT;
 			spin_unlock_irqrestore(&ch->lock, irq_flags);
 
 			xpc_disconnect_callout(ch, xpcDisconnecting);
-		} else {
-			spin_unlock_irqrestore(&ch->lock, irq_flags);
+
+			spin_lock_irqsave(&ch->lock, irq_flags);
+			ch->flags |= XPC_C_DISCONNECTINGCALLOUT_MADE;
 		}
+		spin_unlock_irqrestore(&ch->lock, irq_flags);
 		if (atomic_dec_return(&part->nchannels_engaged) = 0) {
 			xpc_mark_partition_disengaged(part);
 			xpc_IPI_send_disengage(part);
diff --git a/include/asm-ia64/sn/xpc.h b/include/asm-ia64/sn/xpc.h
index 0c36928..df7f5f4 100644
--- a/include/asm-ia64/sn/xpc.h
+++ b/include/asm-ia64/sn/xpc.h
@@ -508,19 +508,24 @@ struct xpc_channel {
 #define	XPC_C_OPENREQUEST	0x00000010 /* local open channel request */
 
 #define	XPC_C_SETUP		0x00000020 /* channel's msgqueues are alloc'd */
-#define	XPC_C_CONNECTCALLOUT	0x00000040 /* channel connected callout made */
-#define	XPC_C_CONNECTED		0x00000080 /* local channel is connected */
-#define	XPC_C_CONNECTING	0x00000100 /* channel is being connected */
-
-#define	XPC_C_RCLOSEREPLY	0x00000200 /* remote close channel reply */
-#define	XPC_C_CLOSEREPLY	0x00000400 /* local close channel reply */
-#define	XPC_C_RCLOSEREQUEST	0x00000800 /* remote close channel request */
-#define	XPC_C_CLOSEREQUEST	0x00001000 /* local close channel request */
-
-#define	XPC_C_DISCONNECTED	0x00002000 /* channel is disconnected */
-#define	XPC_C_DISCONNECTING	0x00004000 /* channel is being disconnected */
-#define	XPC_C_DISCONNECTCALLOUT	0x00008000 /* chan disconnected callout made */
-#define	XPC_C_WDISCONNECT	0x00010000 /* waiting for channel disconnect */
+#define	XPC_C_CONNECTEDCALLOUT	0x00000040 /* connected callout initiated */
+#define	XPC_C_CONNECTEDCALLOUT_MADE \
+				0x00000080 /* connected callout completed */
+#define	XPC_C_CONNECTED		0x00000100 /* local channel is connected */
+#define	XPC_C_CONNECTING	0x00000200 /* channel is being connected */
+
+#define	XPC_C_RCLOSEREPLY	0x00000400 /* remote close channel reply */
+#define	XPC_C_CLOSEREPLY	0x00000800 /* local close channel reply */
+#define	XPC_C_RCLOSEREQUEST	0x00001000 /* remote close channel request */
+#define	XPC_C_CLOSEREQUEST	0x00002000 /* local close channel request */
+
+#define	XPC_C_DISCONNECTED	0x00004000 /* channel is disconnected */
+#define	XPC_C_DISCONNECTING	0x00008000 /* channel is being disconnected */
+#define	XPC_C_DISCONNECTINGCALLOUT \
+				0x00010000 /* disconnecting callout initiated */
+#define	XPC_C_DISCONNECTINGCALLOUT_MADE \
+				0x00020000 /* disconnecting callout completed */
+#define	XPC_C_WDISCONNECT	0x00040000 /* waiting for channel disconnect */
 
 
 

diff-tree c2a4969ba14e852bf4ee92c7db3b0cf82405a0c9 (from 9c65cb9be62ac4993a5b392304b82e4f04f010fd)
Author: Dean Roe <roe@sgi.com>
Date:   Tue Feb 14 15:01:23 2006 -0600

    [IA64-SGI] fix the size of __sn_cnodeid_to_nasid
    
    The __sn_cnodeid_to_nasid array was incorrectly sized at MAX_NUMNODES.
    On a large system, this array could overflow.  The following patch
    corrects this by defining it to MAX_COMPACT_NODES.
    
    Signed-off-by: Dean Roe <roe@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/sn/kernel/setup.c b/arch/ia64/sn/kernel/setup.c
index 1672eca..5b84836 100644
--- a/arch/ia64/sn/kernel/setup.c
+++ b/arch/ia64/sn/kernel/setup.c
@@ -75,7 +75,7 @@ EXPORT_SYMBOL(sn_rtc_cycles_per_second);
 DEFINE_PER_CPU(struct sn_hub_info_s, __sn_hub_info);
 EXPORT_PER_CPU_SYMBOL(__sn_hub_info);
 
-DEFINE_PER_CPU(short, __sn_cnodeid_to_nasid[MAX_NUMNODES]);
+DEFINE_PER_CPU(short, __sn_cnodeid_to_nasid[MAX_COMPACT_NODES]);
 EXPORT_PER_CPU_SYMBOL(__sn_cnodeid_to_nasid);
 
 DEFINE_PER_CPU(struct nodepda_s *, __sn_nodepda);
diff --git a/include/asm-ia64/sn/arch.h b/include/asm-ia64/sn/arch.h
index 1a3831c..91c31be 100644
--- a/include/asm-ia64/sn/arch.h
+++ b/include/asm-ia64/sn/arch.h
@@ -70,7 +70,7 @@ DECLARE_PER_CPU(struct sn_hub_info_s, __
  * Compact node ID to nasid mappings kept in the per-cpu data areas of each
  * cpu.
  */
-DECLARE_PER_CPU(short, __sn_cnodeid_to_nasid[MAX_NUMNODES]);
+DECLARE_PER_CPU(short, __sn_cnodeid_to_nasid[MAX_COMPACT_NODES]);
 #define sn_cnodeid_to_nasid	(&__get_cpu_var(__sn_cnodeid_to_nasid[0]))
 
 

diff-tree 9c65cb9be62ac4993a5b392304b82e4f04f010fd (from 26d10915de3030a55253dba3b2b145402cdf6429)
Author: Mark Maule <maule@sgi.com>
Date:   Tue Feb 14 10:23:37 2006 -0600

    [IA64-SGI] export sn_pcidev_info_get
    
    Export sn_pcidev_info_get.
    
    Signed-off-by Mark Maule <maule@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/sn/kernel/io_init.c b/arch/ia64/sn/kernel/io_init.c
index dfb3f29..3edef0d 100644
--- a/arch/ia64/sn/kernel/io_init.c
+++ b/arch/ia64/sn/kernel/io_init.c
@@ -716,3 +716,4 @@ EXPORT_SYMBOL(sn_pci_unfixup_slot);
 EXPORT_SYMBOL(sn_pci_controller_fixup);
 EXPORT_SYMBOL(sn_bus_store_sysdata);
 EXPORT_SYMBOL(sn_bus_free_sysdata);
+EXPORT_SYMBOL(sn_pcidev_info_get);

diff-tree 26d10915de3030a55253dba3b2b145402cdf6429 (from d3454344b3507042e5d561d0cfed19e99cf2fc88)
Author: Jes Sorensen <jes@sgi.com>
Date:   Mon Feb 13 05:35:01 2006 -0500

    [IA64-SGI] remove compile time warning
    
    This one falls into the "present for Andrew Morton" category to address
    his wishlist for a compiler warning free build ;-)
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/sn/kernel/setup.c b/arch/ia64/sn/kernel/setup.c
index 48645ac..1672eca 100644
--- a/arch/ia64/sn/kernel/setup.c
+++ b/arch/ia64/sn/kernel/setup.c
@@ -317,6 +317,7 @@ struct pcdp_vga_device {
 #define PCDP_PCI_TRANS_IOPORT	0x02
 #define PCDP_PCI_TRANS_MMIO	0x01
 
+#if defined(CONFIG_VT) && defined(CONFIG_VGA_CONSOLE)
 static void
 sn_scan_pcdp(void)
 {
@@ -358,6 +359,7 @@ sn_scan_pcdp(void)
 		break; /* once we find the primary, we're done */
 	}
 }
+#endif
 
 static unsigned long sn2_rtc_initial;
 

diff-tree d3454344b3507042e5d561d0cfed19e99cf2fc88 (from 8ed9b2c7a804335004e4bd3b4c6989c5b6bc243f)
Author: Jes Sorensen <jes@sgi.com>
Date:   Mon Feb 13 05:32:09 2006 -0500

    [IA64] remove obsolete corporate address
    
    Remove obsolete SGI address
    
    Signed-off-by: Jes Sorensen <jes@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/sn/kernel/sn2/timer_interrupt.c b/arch/ia64/sn/kernel/sn2/timer_interrupt.c
index adf5db2..fa7f699 100644
--- a/arch/ia64/sn/kernel/sn2/timer_interrupt.c
+++ b/arch/ia64/sn/kernel/sn2/timer_interrupt.c
@@ -1,7 +1,7 @@
 /*
  *
  *
- * Copyright (c) 2005 Silicon Graphics, Inc.  All Rights Reserved.
+ * Copyright (c) 2005, 2006 Silicon Graphics, Inc.  All Rights Reserved.
  * 
  * This program is free software; you can redistribute it and/or modify it 
  * under the terms of version 2 of the GNU General Public License 
@@ -22,11 +22,6 @@
  * License along with this program; if not, write the Free Software 
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
  * 
- * Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, 
- * Mountain View, CA  94043, or:
- * 
- * http://www.sgi.com 
- * 
  * For further information regarding this notice, see: 
  * 
  * http://oss.sgi.com/projects/GenInfo/NoticeExplan
diff --git a/drivers/ide/pci/sgiioc4.c b/drivers/ide/pci/sgiioc4.c
index 2b286e8..43b96e2 100644
--- a/drivers/ide/pci/sgiioc4.c
+++ b/drivers/ide/pci/sgiioc4.c
@@ -13,11 +13,6 @@
  * License along with this program; if not, write the Free Software
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
  *
- * Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
- * Mountain View, CA  94043, or:
- *
- * http://www.sgi.com
- *
  * For further information regarding this notice, see:
  *
  * http://oss.sgi.com/projects/GenInfo/NoticeExplan
diff --git a/include/asm-ia64/machvec_sn2.h b/include/asm-ia64/machvec_sn2.h
index e1b6cd6..03d00fa 100644
--- a/include/asm-ia64/machvec_sn2.h
+++ b/include/asm-ia64/machvec_sn2.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002-2003 Silicon Graphics, Inc.  All Rights Reserved.
+ * Copyright (c) 2002-2003, 2006 Silicon Graphics, Inc.  All Rights Reserved.
  * 
  * This program is free software; you can redistribute it and/or modify it 
  * under the terms of version 2 of the GNU General Public License 
@@ -20,11 +20,6 @@
  * License along with this program; if not, write the Free Software 
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
  * 
- * Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, 
- * Mountain View, CA  94043, or:
- * 
- * http://www.sgi.com 
- * 
  * For further information regarding this notice, see: 
  * 
  * http://oss.sgi.com/projects/GenInfo/NoticeExplan

diff-tree 8ed9b2c7a804335004e4bd3b4c6989c5b6bc243f (from 50d8e59038703c4da5acaed9afaa37ae416d3153)
Author: Jes Sorensen <jes@sgi.com>
Date:   Mon Feb 13 05:29:57 2006 -0500

    [IA64-SGI] sn2 minor fixes and cleanups
    
    General SN2 code cleanup:
     - Do not initialize global variables to zero
     - Use kzalloc instead of kmalloc+memset
     - Check kmalloc return values
     - Do not obfuscate spin lock calls
     - Remove some unused code
     - Various formatting cleanups
    
    Signed-off-by: Jes Sorensen <jes@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/sn/kernel/io_init.c b/arch/ia64/sn/kernel/io_init.c
index 3437c23..dfb3f29 100644
--- a/arch/ia64/sn/kernel/io_init.c
+++ b/arch/ia64/sn/kernel/io_init.c
@@ -23,6 +23,10 @@
 #include "xtalk/hubdev.h"
 #include "xtalk/xwidgetdev.h"
 
+
+extern void sn_init_cpei_timer(void);
+extern void register_sn_procfs(void);
+
 static struct list_head sn_sysdata_list;
 
 /* sysdata list struct */
@@ -40,12 +44,12 @@ struct brick {
 	struct slab_info slab_info[MAX_SLABS + 1];
 };
 
-int sn_ioif_inited = 0;		/* SN I/O infrastructure initialized? */
+int sn_ioif_inited;		/* SN I/O infrastructure initialized? */
 
 struct sn_pcibus_provider *sn_pci_provider[PCIIO_ASIC_MAX_TYPES];	/* indexed by asic type */
 
-static int max_segment_number = 0; /* Default highest segment number */
-static int max_pcibus_number = 255; /* Default highest pci bus number */
+static int max_segment_number;		 /* Default highest segment number */
+static int max_pcibus_number = 255;	/* Default highest pci bus number */
 
 /*
  * Hooks and struct for unsupported pci providers
@@ -84,7 +88,6 @@ static inline u64
 sal_get_device_dmaflush_list(u64 nasid, u64 widget_num, u64 device_num,
 			     u64 address)
 {
-
 	struct ia64_sal_retval ret_stuff;
 	ret_stuff.status = 0;
 	ret_stuff.v0 = 0;
@@ -94,7 +97,6 @@ sal_get_device_dmaflush_list(u64 nasid, 
 			(u64) nasid, (u64) widget_num,
 			(u64) device_num, (u64) address, 0, 0, 0);
 	return ret_stuff.status;
-
 }
 
 /*
@@ -102,7 +104,6 @@ sal_get_device_dmaflush_list(u64 nasid, 
  */
 static inline u64 sal_get_hubdev_info(u64 handle, u64 address)
 {
-
 	struct ia64_sal_retval ret_stuff;
 	ret_stuff.status = 0;
 	ret_stuff.v0 = 0;
@@ -118,7 +119,6 @@ static inline u64 sal_get_hubdev_info(u6
  */
 static inline u64 sal_get_pcibus_info(u64 segment, u64 busnum, u64 address)
 {
-
 	struct ia64_sal_retval ret_stuff;
 	ret_stuff.status = 0;
 	ret_stuff.v0 = 0;
@@ -215,7 +215,7 @@ static void __init sn_fixup_ionodes(void
 	struct hubdev_info *hubdev;
 	u64 status;
 	u64 nasid;
-	int i, widget, device;
+	int i, widget, device, size;
 
 	/*
 	 * Get SGI Specific HUB chipset information.
@@ -251,48 +251,37 @@ static void __init sn_fixup_ionodes(void
 		if (!hubdev->hdi_flush_nasid_list.widget_p)
 			continue;
 
+		size = (HUB_WIDGET_ID_MAX + 1) *
+			sizeof(struct sn_flush_device_kernel *);
 		hubdev->hdi_flush_nasid_list.widget_p -		    kmalloc((HUB_WIDGET_ID_MAX + 1) *
-			    sizeof(struct sn_flush_device_kernel *),
-			    GFP_KERNEL);
-		memset(hubdev->hdi_flush_nasid_list.widget_p, 0x0,
-		       (HUB_WIDGET_ID_MAX + 1) *
-		       sizeof(struct sn_flush_device_kernel *));
+			kzalloc(size, GFP_KERNEL);
+		if (!hubdev->hdi_flush_nasid_list.widget_p)
+			BUG();
 
 		for (widget = 0; widget <= HUB_WIDGET_ID_MAX; widget++) {
-			sn_flush_device_kernel = kmalloc(DEV_PER_WIDGET *
-						         sizeof(struct
-						        sn_flush_device_kernel),
-						        GFP_KERNEL);
+			size = DEV_PER_WIDGET *
+				sizeof(struct sn_flush_device_kernel);
+			sn_flush_device_kernel = kzalloc(size, GFP_KERNEL);
 			if (!sn_flush_device_kernel)
 				BUG();
-			memset(sn_flush_device_kernel, 0x0,
-			       DEV_PER_WIDGET *
-			       sizeof(struct sn_flush_device_kernel));
 
 			dev_entry = sn_flush_device_kernel;
 			for (device = 0; device < DEV_PER_WIDGET;
 			     device++,dev_entry++) {
-				dev_entry->common = kmalloc(sizeof(struct
-					      	        sn_flush_device_common),
-					                    GFP_KERNEL);
+				size = sizeof(struct sn_flush_device_common);
+				dev_entry->common = kzalloc(size, GFP_KERNEL);
 				if (!dev_entry->common)
 					BUG();
-				memset(dev_entry->common, 0x0, sizeof(struct
-					     	       sn_flush_device_common));
 
 				if (sn_prom_feature_available(
 						       PRF_DEVICE_FLUSH_LIST))
 					status = sal_get_device_dmaflush_list(
-									  nasid,
-									 widget,
-								       	 device,
-						      (u64)(dev_entry->common));
+						     nasid, widget, device,
+						     (u64)(dev_entry->common));
 				else
 					status = sn_device_fixup_war(nasid,
-								     widget,
-							    	     device,
-							     dev_entry->common);
+						     widget, device,
+						     dev_entry->common);
 				if (status != SALRET_OK)
 					panic("SAL call failed: %s\n",
 					      ia64_sal_strerror(status));
@@ -383,13 +372,12 @@ void sn_pci_fixup_slot(struct pci_dev *d
 
 	pci_dev_get(dev); /* for the sysdata pointer */
 	pcidev_info = kzalloc(sizeof(struct pcidev_info), GFP_KERNEL);
-	if (pcidev_info <= 0)
+	if (!pcidev_info)
 		BUG();		/* Cannot afford to run out of memory */
 
-	sn_irq_info = kmalloc(sizeof(struct sn_irq_info), GFP_KERNEL);
-	if (sn_irq_info <= 0)
+	sn_irq_info = kzalloc(sizeof(struct sn_irq_info), GFP_KERNEL);
+	if (!sn_irq_info)
 		BUG();		/* Cannot afford to run out of memory */
-	memset(sn_irq_info, 0, sizeof(struct sn_irq_info));
 
 	/* Call to retrieve pci device information needed by kernel. */
 	status = sal_get_pcidev_info((u64) segment, (u64) dev->bus->number, 
@@ -482,13 +470,13 @@ void sn_pci_fixup_slot(struct pci_dev *d
  */
 void sn_pci_controller_fixup(int segment, int busnum, struct pci_bus *bus)
 {
-	int status = 0;
+	int status;
 	int nasid, cnode;
 	struct pci_controller *controller;
 	struct sn_pci_controller *sn_controller;
 	struct pcibus_bussoft *prom_bussoft_ptr;
 	struct hubdev_info *hubdev_info;
-	void *provider_soft = NULL;
+	void *provider_soft;
 	struct sn_pcibus_provider *provider;
 
  	status = sal_get_pcibus_info((u64) segment, (u64) busnum,
@@ -535,6 +523,8 @@ void sn_pci_controller_fixup(int segment
 	bus->sysdata = controller;
 	if (provider->bus_fixup)
 		provider_soft = (*provider->bus_fixup) (prom_bussoft_ptr, controller);
+	else
+		provider_soft = NULL;
 
 	if (provider_soft = NULL) {
 		/* fixup failed or not applicable */
@@ -638,13 +628,8 @@ void sn_bus_free_sysdata(void)
 
 static int __init sn_pci_init(void)
 {
-	int i = 0;
-	int j = 0;
+	int i, j;
 	struct pci_dev *pci_dev = NULL;
-	extern void sn_init_cpei_timer(void);
-#ifdef CONFIG_PROC_FS
-	extern void register_sn_procfs(void);
-#endif
 
 	if (!ia64_platform_is("sn2") || IS_RUNNING_ON_FAKE_PROM())
 		return 0;
@@ -700,32 +685,29 @@ static int __init sn_pci_init(void)
  */
 void hubdev_init_node(nodepda_t * npda, cnodeid_t node)
 {
-
 	struct hubdev_info *hubdev_info;
+	int size;
+	pg_data_t *pg;
+
+	size = sizeof(struct hubdev_info);
 
 	if (node >= num_online_nodes())	/* Headless/memless IO nodes */
-		hubdev_info -		    (struct hubdev_info *)alloc_bootmem_node(NODE_DATA(0),
-							     sizeof(struct
-								    hubdev_info));
+		pg = NODE_DATA(0);
 	else
-		hubdev_info -		    (struct hubdev_info *)alloc_bootmem_node(NODE_DATA(node),
-							     sizeof(struct
-								    hubdev_info));
-	npda->pdinfo = (void *)hubdev_info;
+		pg = NODE_DATA(node);
 
+	hubdev_info = (struct hubdev_info *)alloc_bootmem_node(pg, size);
+
+	npda->pdinfo = (void *)hubdev_info;
 }
 
 geoid_t
 cnodeid_get_geoid(cnodeid_t cnode)
 {
-
 	struct hubdev_info *hubdev;
 
 	hubdev = (struct hubdev_info *)(NODEPDA(cnode)->pdinfo);
 	return hubdev->hdi_geoid;
-
 }
 
 subsys_initcall(sn_pci_init);
diff --git a/arch/ia64/sn/kernel/sn2/prominfo_proc.c b/arch/ia64/sn/kernel/sn2/prominfo_proc.c
index 81c63b2..6ae276d 100644
--- a/arch/ia64/sn/kernel/sn2/prominfo_proc.c
+++ b/arch/ia64/sn/kernel/sn2/prominfo_proc.c
@@ -3,7 +3,7 @@
  * License.  See the file "COPYING" in the main directory of this archive
  * for more details.
  *
- * Copyright (C) 1999,2001-2004 Silicon Graphics, Inc.  All Rights Reserved.
+ * Copyright (C) 1999,2001-2004, 2006 Silicon Graphics, Inc.  All Rights Reserved.
  *
  * Module to export the system's Firmware Interface Tables, including
  * PROM revision numbers and banners, in /proc
@@ -190,7 +190,7 @@ static int
 read_version_entry(char *page, char **start, off_t off, int count, int *eof,
 		   void *data)
 {
-	int len = 0;
+	int len;
 
 	/* data holds the NASID of the node */
 	len = dump_version(page, (unsigned long)data);
@@ -202,7 +202,7 @@ static int
 read_fit_entry(char *page, char **start, off_t off, int count, int *eof,
 	       void *data)
 {
-	int len = 0;
+	int len;
 
 	/* data holds the NASID of the node */
 	len = dump_fit(page, (unsigned long)data);
@@ -229,13 +229,16 @@ int __init prominfo_init(void)
 	struct proc_dir_entry *p;
 	cnodeid_t cnodeid;
 	unsigned long nasid;
+	int size;
 	char name[NODE_NAME_LEN];
 
 	if (!ia64_platform_is("sn2"))
 		return 0;
 
-	proc_entries = kmalloc(num_online_nodes() * sizeof(struct proc_dir_entry *),
-			       GFP_KERNEL);
+	size = num_online_nodes() * sizeof(struct proc_dir_entry *);
+	proc_entries = kzalloc(size, GFP_KERNEL);
+	if (!proc_entries)
+		return -ENOMEM;
 
 	sgi_prominfo_entry = proc_mkdir("sgi_prominfo", NULL);
 
@@ -244,14 +247,12 @@ int __init prominfo_init(void)
 		sprintf(name, "node%d", cnodeid);
 		*entp = proc_mkdir(name, sgi_prominfo_entry);
 		nasid = cnodeid_to_nasid(cnodeid);
-		p = create_proc_read_entry(
-			"fit", 0, *entp, read_fit_entry,
-			(void *)nasid);
+		p = create_proc_read_entry("fit", 0, *entp, read_fit_entry,
+					   (void *)nasid);
 		if (p)
 			p->owner = THIS_MODULE;
-		p = create_proc_read_entry(
-			"version", 0, *entp, read_version_entry,
-			(void *)nasid);
+		p = create_proc_read_entry("version", 0, *entp,
+					   read_version_entry, (void *)nasid);
 		if (p)
 			p->owner = THIS_MODULE;
 		entp++;
@@ -263,7 +264,7 @@ int __init prominfo_init(void)
 void __exit prominfo_exit(void)
 {
 	struct proc_dir_entry **entp;
-	unsigned cnodeid;
+	unsigned int cnodeid;
 	char name[NODE_NAME_LEN];
 
 	entp = proc_entries;
diff --git a/arch/ia64/sn/kernel/sn2/sn2_smp.c b/arch/ia64/sn/kernel/sn2/sn2_smp.c
index f153a4c..24eefb2 100644
--- a/arch/ia64/sn/kernel/sn2/sn2_smp.c
+++ b/arch/ia64/sn/kernel/sn2/sn2_smp.c
@@ -46,8 +46,14 @@ DECLARE_PER_CPU(struct ptc_stats, ptcsta
 
 static  __cacheline_aligned DEFINE_SPINLOCK(sn2_global_ptc_lock);
 
-void sn2_ptc_deadlock_recovery(short *, short, short, int, volatile unsigned long *, unsigned long,
-	volatile unsigned long *, unsigned long);
+extern unsigned long
+sn2_ptc_deadlock_recovery_core(volatile unsigned long *, unsigned long,
+			       volatile unsigned long *, unsigned long,
+			       volatile unsigned long *, unsigned long);
+void
+sn2_ptc_deadlock_recovery(short *, short, short, int,
+			  volatile unsigned long *, unsigned long,
+			  volatile unsigned long *, unsigned long);
 
 /*
  * Note: some is the following is captured here to make degugging easier
@@ -59,16 +65,6 @@ void sn2_ptc_deadlock_recovery(short *, 
 #define reset_max_active_on_deadlock()	1
 #define PTC_LOCK(sh1)			((sh1) ? &sn2_global_ptc_lock : &sn_nodepda->ptc_lock)
 
-static inline void ptc_lock(int sh1, unsigned long *flagp)
-{
-	spin_lock_irqsave(PTC_LOCK(sh1), *flagp);
-}
-
-static inline void ptc_unlock(int sh1, unsigned long flags)
-{
-	spin_unlock_irqrestore(PTC_LOCK(sh1), flags);
-}
-
 struct ptc_stats {
 	unsigned long ptc_l;
 	unsigned long change_rid;
@@ -82,6 +78,8 @@ struct ptc_stats {
 	unsigned long shub_ptc_flushes_not_my_mm;
 };
 
+#define sn2_ptctest	0
+
 static inline unsigned long wait_piowc(void)
 {
 	volatile unsigned long *piows;
@@ -200,7 +198,7 @@ sn2_global_tlb_purge(struct mm_struct *m
 	max_active = max_active_pio(shub1);
 
 	itc = ia64_get_itc();
-	ptc_lock(shub1, &flags);
+	spin_lock_irqsave(PTC_LOCK(shub1), flags);
 	itc2 = ia64_get_itc();
 
 	__get_cpu_var(ptcstats).lock_itc_clocks += itc2 - itc;
@@ -258,7 +256,7 @@ sn2_global_tlb_purge(struct mm_struct *m
 		ia64_srlz_d();
 	}
 
-	ptc_unlock(shub1, flags);
+	spin_unlock_irqrestore(PTC_LOCK(shub1), flags);
 
 	preempt_enable();
 }
@@ -270,11 +268,12 @@ sn2_global_tlb_purge(struct mm_struct *m
  * TLB flush transaction.  The recovery sequence is somewhat tricky & is
  * coded in assembly language.
  */
-void sn2_ptc_deadlock_recovery(short *nasids, short ib, short ie, int mynasid, volatile unsigned long *ptc0, unsigned long data0,
-	volatile unsigned long *ptc1, unsigned long data1)
+
+void
+sn2_ptc_deadlock_recovery(short *nasids, short ib, short ie, int mynasid,
+			  volatile unsigned long *ptc0, unsigned long data0,
+			  volatile unsigned long *ptc1, unsigned long data1)
 {
-	extern unsigned long sn2_ptc_deadlock_recovery_core(volatile unsigned long *, unsigned long,
-	        volatile unsigned long *, unsigned long, volatile unsigned long *, unsigned long);
 	short nasid, i;
 	unsigned long *piows, zeroval, n;
 
diff --git a/arch/ia64/sn/kernel/sn2/sn_proc_fs.c b/arch/ia64/sn/kernel/sn2/sn_proc_fs.c
index a06719d..c686d9c 100644
--- a/arch/ia64/sn/kernel/sn2/sn_proc_fs.c
+++ b/arch/ia64/sn/kernel/sn2/sn_proc_fs.c
@@ -6,11 +6,11 @@
  * Copyright (C) 2000-2005 Silicon Graphics, Inc. All rights reserved.
  */
 #include <linux/config.h>
-#include <asm/uaccess.h>
 
 #ifdef CONFIG_PROC_FS
 #include <linux/proc_fs.h>
 #include <linux/seq_file.h>
+#include <asm/uaccess.h>
 #include <asm/sn/sn_sal.h>
 
 static int partition_id_show(struct seq_file *s, void *p)
@@ -90,10 +90,10 @@ static int coherence_id_open(struct inod
 	return single_open(file, coherence_id_show, NULL);
 }
 
-static struct proc_dir_entry *sn_procfs_create_entry(
-	const char *name, struct proc_dir_entry *parent,
-	int (*openfunc)(struct inode *, struct file *),
-	int (*releasefunc)(struct inode *, struct file *))
+static struct proc_dir_entry
+*sn_procfs_create_entry(const char *name, struct proc_dir_entry *parent,
+			int (*openfunc)(struct inode *, struct file *),
+			int (*releasefunc)(struct inode *, struct file *))
 {
 	struct proc_dir_entry *e = create_proc_entry(name, 0444, parent);
 
@@ -126,24 +126,24 @@ void register_sn_procfs(void)
 		return;
 
 	sn_procfs_create_entry("partition_id", sgi_proc_dir,
-		partition_id_open, single_release);
+			       partition_id_open, single_release);
 
 	sn_procfs_create_entry("system_serial_number", sgi_proc_dir,
-		system_serial_number_open, single_release);
+			       system_serial_number_open, single_release);
 
 	sn_procfs_create_entry("licenseID", sgi_proc_dir, 
-		licenseID_open, single_release);
+			       licenseID_open, single_release);
 
 	e = sn_procfs_create_entry("sn_force_interrupt", sgi_proc_dir, 
-		sn_force_interrupt_open, single_release);
+				   sn_force_interrupt_open, single_release);
 	if (e) 
 		e->proc_fops->write = sn_force_interrupt_write_proc;
 
 	sn_procfs_create_entry("coherence_id", sgi_proc_dir, 
-		coherence_id_open, single_release);
+			       coherence_id_open, single_release);
 	
 	sn_procfs_create_entry("sn_topology", sgi_proc_dir,
-		sn_topology_open, sn_topology_release);
+			       sn_topology_open, sn_topology_release);
 }
 
 #endif /* CONFIG_PROC_FS */
diff --git a/arch/ia64/sn/kernel/tiocx.c b/arch/ia64/sn/kernel/tiocx.c
index d263d3e..8a56f8b 100644
--- a/arch/ia64/sn/kernel/tiocx.c
+++ b/arch/ia64/sn/kernel/tiocx.c
@@ -284,12 +284,10 @@ struct sn_irq_info *tiocx_irq_alloc(nasi
 	if ((nasid & 1) = 0)
 		return NULL;
 
-	sn_irq_info = kmalloc(sn_irq_size, GFP_KERNEL);
+	sn_irq_info = kzalloc(sn_irq_size, GFP_KERNEL);
 	if (sn_irq_info = NULL)
 		return NULL;
 
-	memset(sn_irq_info, 0x0, sn_irq_size);
-
 	status = tiocx_intr_alloc(nasid, widget, __pa(sn_irq_info), irq,
 				  req_nasid, slice);
 	if (status) {
diff --git a/arch/ia64/sn/pci/pci_dma.c b/arch/ia64/sn/pci/pci_dma.c
index 5a36292..b4b84c2 100644
--- a/arch/ia64/sn/pci/pci_dma.c
+++ b/arch/ia64/sn/pci/pci_dma.c
@@ -335,10 +335,10 @@ int sn_pci_legacy_read(struct pci_bus *b
 	 */
 
 	SAL_CALL(isrv, SN_SAL_IOIF_PCI_SAFE,
-		pci_domain_nr(bus), bus->number,
-		0, /* io */
-		0, /* read */
-		port, size, __pa(val));
+		 pci_domain_nr(bus), bus->number,
+		 0, /* io */
+		 0, /* read */
+		 port, size, __pa(val));
 
 	if (isrv.status = 0)
 		return size;
@@ -381,10 +381,10 @@ int sn_pci_legacy_write(struct pci_bus *
 	 */
 
 	SAL_CALL(isrv, SN_SAL_IOIF_PCI_SAFE,
-		pci_domain_nr(bus), bus->number,
-		0, /* io */
-		1, /* write */
-		port, size, __pa(&val));
+		 pci_domain_nr(bus), bus->number,
+		 0, /* io */
+		 1, /* write */
+		 port, size, __pa(&val));
 
 	if (isrv.status = 0)
 		return size;
diff --git a/arch/ia64/sn/pci/pcibr/pcibr_ate.c b/arch/ia64/sn/pci/pcibr/pcibr_ate.c
index aa3fa51..1f0253b 100644
--- a/arch/ia64/sn/pci/pcibr/pcibr_ate.c
+++ b/arch/ia64/sn/pci/pcibr/pcibr_ate.c
@@ -3,7 +3,7 @@
  * License.  See the file "COPYING" in the main directory of this archive
  * for more details.
  *
- * Copyright (C) 2001-2004 Silicon Graphics, Inc. All rights reserved.
+ * Copyright (C) 2001-2006 Silicon Graphics, Inc. All rights reserved.
  */
 
 #include <linux/types.h>
@@ -12,7 +12,7 @@
 #include <asm/sn/pcibus_provider_defs.h>
 #include <asm/sn/pcidev.h>
 
-int pcibr_invalidate_ate = 0;	/* by default don't invalidate ATE on free */
+int pcibr_invalidate_ate;	/* by default don't invalidate ATE on free */
 
 /*
  * mark_ate: Mark the ate as either free or inuse.
@@ -20,14 +20,12 @@ int pcibr_invalidate_ate = 0;	/* by defa
 static void mark_ate(struct ate_resource *ate_resource, int start, int number,
 		     u64 value)
 {
-
 	u64 *ate = ate_resource->ate;
 	int index;
 	int length = 0;
 
 	for (index = start; length < number; index++, length++)
 		ate[index] = value;
-
 }
 
 /*
@@ -37,7 +35,6 @@ static void mark_ate(struct ate_resource
 static int find_free_ate(struct ate_resource *ate_resource, int start,
 			 int count)
 {
-
 	u64 *ate = ate_resource->ate;
 	int index;
 	int start_free;
@@ -70,12 +67,10 @@ static int find_free_ate(struct ate_reso
 static inline void free_ate_resource(struct ate_resource *ate_resource,
 				     int start)
 {
-
 	mark_ate(ate_resource, start, ate_resource->ate[start], 0);
 	if ((ate_resource->lowest_free_index > start) ||
 	    (ate_resource->lowest_free_index < 0))
 		ate_resource->lowest_free_index = start;
-
 }
 
 /*
@@ -84,7 +79,6 @@ static inline void free_ate_resource(str
 static inline int alloc_ate_resource(struct ate_resource *ate_resource,
 				     int ate_needed)
 {
-
 	int start_index;
 
 	/*
@@ -118,19 +112,12 @@ static inline int alloc_ate_resource(str
  */
 int pcibr_ate_alloc(struct pcibus_info *pcibus_info, int count)
 {
-	int status = 0;
-	u64 flag;
+	int status;
+	unsigned long flags;
 
-	flag = pcibr_lock(pcibus_info);
+	spin_lock_irqsave(&pcibus_info->pbi_lock, flags);
 	status = alloc_ate_resource(&pcibus_info->pbi_int_ate_resource, count);
-
-	if (status < 0) {
-		/* Failed to allocate */
-		pcibr_unlock(pcibus_info, flag);
-		return -1;
-	}
-
-	pcibr_unlock(pcibus_info, flag);
+	spin_unlock_irqrestore(&pcibus_info->pbi_lock, flags);
 
 	return status;
 }
@@ -182,7 +169,7 @@ void pcibr_ate_free(struct pcibus_info *
 		ate_write(pcibus_info, index, count, (ate & ~PCI32_ATE_V));
 	}
 
-	flags = pcibr_lock(pcibus_info);
+	spin_lock_irqsave(&pcibus_info->pbi_lock, flags);
 	free_ate_resource(&pcibus_info->pbi_int_ate_resource, index);
-	pcibr_unlock(pcibus_info, flags);
+	spin_unlock_irqrestore(&pcibus_info->pbi_lock, flags);
 }
diff --git a/arch/ia64/sn/pci/pcibr/pcibr_dma.c b/arch/ia64/sn/pci/pcibr/pcibr_dma.c
index 54ce5b7..9f86bb6 100644
--- a/arch/ia64/sn/pci/pcibr/pcibr_dma.c
+++ b/arch/ia64/sn/pci/pcibr/pcibr_dma.c
@@ -137,14 +137,12 @@ pcibr_dmatrans_direct64(struct pcidev_in
 		pci_addr |= PCI64_ATTR_VIRTUAL;
 
 	return pci_addr;
-
 }
 
 static dma_addr_t
 pcibr_dmatrans_direct32(struct pcidev_info * info,
 			u64 paddr, size_t req_size, u64 flags)
 {
-
 	struct pcidev_info *pcidev_info = info->pdi_host_pcidev_info;
 	struct pcibus_info *pcibus_info = (struct pcibus_info *)pcidev_info->
 	    pdi_pcibus_info;
@@ -171,7 +169,6 @@ pcibr_dmatrans_direct32(struct pcidev_in
 	}
 
 	return PCI32_DIRECT_BASE | offset;
-
 }
 
 /*
@@ -218,9 +215,8 @@ void sn_dma_flush(u64 addr)
 	u64 flags;
 	u64 itte;
 	struct hubdev_info *hubinfo;
-	volatile struct sn_flush_device_kernel *p;
-	volatile struct sn_flush_device_common *common;
-
+	struct sn_flush_device_kernel *p;
+	struct sn_flush_device_common *common;
 	struct sn_flush_nasid_entry *flush_nasid_list;
 
 	if (!sn_ioif_inited)
@@ -310,8 +306,7 @@ void sn_dma_flush(u64 addr)
 					     (common->sfdl_slot - 1));
 		}
 	} else {
-		spin_lock_irqsave((spinlock_t *)&p->sfdl_flush_lock,
-				  flags);
+		spin_lock_irqsave(&p->sfdl_flush_lock, flags);
 		*common->sfdl_flush_addr = 0;
 
 		/* force an interrupt. */
@@ -322,8 +317,7 @@ void sn_dma_flush(u64 addr)
 			cpu_relax();
 
 		/* okay, everything is synched up. */
-		spin_unlock_irqrestore((spinlock_t *)&p->sfdl_flush_lock,
-				       flags);
+		spin_unlock_irqrestore(&p->sfdl_flush_lock, flags);
 	}
 	return;
 }
diff --git a/arch/ia64/sn/pci/pcibr/pcibr_provider.c b/arch/ia64/sn/pci/pcibr/pcibr_provider.c
index 2fac270..98f716b 100644
--- a/arch/ia64/sn/pci/pcibr/pcibr_provider.c
+++ b/arch/ia64/sn/pci/pcibr/pcibr_provider.c
@@ -163,9 +163,12 @@ pcibr_bus_fixup(struct pcibus_bussoft *p
 	/* Setup the PMU ATE map */
 	soft->pbi_int_ate_resource.lowest_free_index = 0;
 	soft->pbi_int_ate_resource.ate -	    kmalloc(soft->pbi_int_ate_size * sizeof(u64), GFP_KERNEL);
-	memset(soft->pbi_int_ate_resource.ate, 0,
- 	       (soft->pbi_int_ate_size * sizeof(u64)));
+	    kzalloc(soft->pbi_int_ate_size * sizeof(u64), GFP_KERNEL);
+
+	if (!soft->pbi_int_ate_resource.ate) {
+		kfree(soft);
+		return NULL;
+	}
 
 	if (prom_bussoft->bs_asic_type = PCIIO_ASIC_TYPE_TIOCP) {
 		/* TIO PCI Bridge: find nearest node with CPUs */
diff --git a/include/asm-ia64/sn/bte.h b/include/asm-ia64/sn/bte.h
index 01e5b41..5335d87 100644
--- a/include/asm-ia64/sn/bte.h
+++ b/include/asm-ia64/sn/bte.h
@@ -46,7 +46,7 @@
 #define BTES_PER_NODE (is_shub2() ? 4 : 2)
 #define MAX_BTES_PER_NODE 4
 
-#define BTE2OFF_CTRL	(0)
+#define BTE2OFF_CTRL	0
 #define BTE2OFF_SRC	(SH2_BT_ENG_SRC_ADDR_0 - SH2_BT_ENG_CSR_0)
 #define BTE2OFF_DEST	(SH2_BT_ENG_DEST_ADDR_0 - SH2_BT_ENG_CSR_0)
 #define BTE2OFF_NOTIFY	(SH2_BT_ENG_NOTIF_ADDR_0 - SH2_BT_ENG_CSR_0)
@@ -75,11 +75,11 @@
 		: base + (BTEOFF_NOTIFY/8))
 
 /* Define hardware modes */
-#define BTE_NOTIFY (IBCT_NOTIFY)
+#define BTE_NOTIFY IBCT_NOTIFY
 #define BTE_NORMAL BTE_NOTIFY
 #define BTE_ZERO_FILL (BTE_NOTIFY | IBCT_ZFIL_MODE)
 /* Use a reserved bit to let the caller specify a wait for any BTE */
-#define BTE_WACQUIRE (0x4000)
+#define BTE_WACQUIRE 0x4000
 /* Use the BTE on the node with the destination memory */
 #define BTE_USE_DEST (BTE_WACQUIRE << 1)
 /* Use any available BTE interface on any node for the transfer */
diff --git a/include/asm-ia64/sn/pcibr_provider.h b/include/asm-ia64/sn/pcibr_provider.h
index 9334078..a601d3a 100644
--- a/include/asm-ia64/sn/pcibr_provider.h
+++ b/include/asm-ia64/sn/pcibr_provider.h
@@ -3,7 +3,7 @@
  * License.  See the file "COPYING" in the main directory of this archive
  * for more details.
  *
- * Copyright (C) 1992-1997,2000-2004 Silicon Graphics, Inc. All rights reserved.
+ * Copyright (C) 1992-1997,2000-2006 Silicon Graphics, Inc. All rights reserved.
  */
 #ifndef _ASM_IA64_SN_PCI_PCIBR_PROVIDER_H
 #define _ASM_IA64_SN_PCI_PCIBR_PROVIDER_H
@@ -115,18 +115,6 @@ struct pcibus_info {
 	spinlock_t              pbi_lock;
 };
 
-/*
- * pcibus_info structure locking macros
- */
-inline static unsigned long
-pcibr_lock(struct pcibus_info *pcibus_info)
-{
-	unsigned long flag;
-	spin_lock_irqsave(&pcibus_info->pbi_lock, flag);
-	return(flag);
-}
-#define pcibr_unlock(pcibus_info, flag)  spin_unlock_irqrestore(&pcibus_info->pbi_lock, flag)
-
 extern int  pcibr_init_provider(void);
 extern void *pcibr_bus_fixup(struct pcibus_bussoft *, struct pci_controller *);
 extern dma_addr_t pcibr_dma_map(struct pci_dev *, unsigned long, size_t);
diff --git a/include/asm-ia64/sn/sn_feature_sets.h b/include/asm-ia64/sn/sn_feature_sets.h
index 9ca642c..ff33e3b 100644
--- a/include/asm-ia64/sn/sn_feature_sets.h
+++ b/include/asm-ia64/sn/sn_feature_sets.h
@@ -12,9 +12,6 @@
  */
 
 
-#include <asm/types.h>
-#include <asm/bitops.h>
-
 /* --------------------- PROM Features -----------------------------*/
 extern int sn_prom_feature_available(int id);
 

diff-tree 50d8e59038703c4da5acaed9afaa37ae416d3153 (from 5ecfbae093f0c37311e89b29bfc0c9d586eace87)
Author: Andreas Schwab <schwab@suse.de>
Date:   Sun Feb 12 17:01:35 2006 +0100

    [IA64] Remove duplicate EXPORT_SYMBOLs
    
    Remove symbol exports from ia64_ksyms.c that are already exported in
    lib/string.c.
    
    Signed-off-by: Andreas Schwab <schwab@suse.de>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/ia64_ksyms.c b/arch/ia64/kernel/ia64_ksyms.c
index e72de58..bbcfd08 100644
--- a/arch/ia64/kernel/ia64_ksyms.c
+++ b/arch/ia64/kernel/ia64_ksyms.c
@@ -10,23 +10,8 @@
 
 #include <linux/string.h>
 EXPORT_SYMBOL(memset);
-EXPORT_SYMBOL(memchr);
-EXPORT_SYMBOL(memcmp);
 EXPORT_SYMBOL(memcpy);
-EXPORT_SYMBOL(memmove);
-EXPORT_SYMBOL(memscan);
-EXPORT_SYMBOL(strcat);
-EXPORT_SYMBOL(strchr);
-EXPORT_SYMBOL(strcmp);
-EXPORT_SYMBOL(strcpy);
 EXPORT_SYMBOL(strlen);
-EXPORT_SYMBOL(strncat);
-EXPORT_SYMBOL(strncmp);
-EXPORT_SYMBOL(strncpy);
-EXPORT_SYMBOL(strnlen);
-EXPORT_SYMBOL(strrchr);
-EXPORT_SYMBOL(strstr);
-EXPORT_SYMBOL(strpbrk);
 
 #include <asm/checksum.h>
 EXPORT_SYMBOL(ip_fast_csum);		/* hand-coded assembly */

diff-tree a6b14fa6fdc01ab3519c2729624f808677539b59 (from 69aa234b918c0d9bc4a20cd6d4453aaa3418f457)
Author: Ashok Raj <ashok.raj@intel.com>
Date:   Tue Feb 14 15:01:12 2006 -0800

    [IA64] Count disabled cpus as potential hot-pluggable CPUs
    
    Have a facility to account for potentially hot-pluggable CPUs. ACPI doesnt
    give a determinstic method to find hot-pluggable CPUs. Hence we use 2 methods
    to assist.
    
    - BIOS can mark potentially hot-pluggable CPUs as disabled in the MADT tables.
    - User can specify the number of hot-pluggable CPUs via parameter
      additional_cpus=X
    
    The option is enabled only if ACPI_CONFIG_HOTPLUG_CPU=y which enables the
    physical hotplug option. Without which user can still use logical onlining
    and offlining of CPUs by enabling CONFIG_HOTPLUG_CPU=y
    
    Adds more bits to cpu_possible_map for potentially hot-pluggable cpus.
    
    Signed-off-by: Ashok Raj <ashok.raj@intel.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
index d2702c4..34795ed 100644
--- a/arch/ia64/kernel/acpi.c
+++ b/arch/ia64/kernel/acpi.c
@@ -761,6 +761,62 @@ int acpi_map_cpu2node(acpi_handle handle
 	return (0);
 }
 
+int additional_cpus __initdata = -1;
+
+static __init int setup_additional_cpus(char *s)
+{
+	if (s)
+		additional_cpus = simple_strtol(s, NULL, 0);
+
+	return 0;
+}
+
+early_param("additional_cpus", setup_additional_cpus);
+
+/*
+ * cpu_possible_map should be static, it cannot change as cpu's
+ * are onlined, or offlined. The reason is per-cpu data-structures
+ * are allocated by some modules at init time, and dont expect to
+ * do this dynamically on cpu arrival/departure.
+ * cpu_present_map on the other hand can change dynamically.
+ * In case when cpu_hotplug is not compiled, then we resort to current
+ * behaviour, which is cpu_possible = cpu_present.
+ * - Ashok Raj
+ *
+ * Three ways to find out the number of additional hotplug CPUs:
+ * - If the BIOS specified disabled CPUs in ACPI/mptables use that.
+ * - The user can overwrite it with additional_cpus=NUM
+ * - Otherwise don't reserve additional CPUs.
+ */
+__init void prefill_possible_map(void)
+{
+	int i;
+	int possible, disabled_cpus;
+
+	disabled_cpus = total_cpus - available_cpus;
+ 	if (additional_cpus = -1) {
+ 		if (disabled_cpus > 0) {
+ 			possible = total_cpus;
+			additional_cpus = disabled_cpus;
+		}
+ 		else {
+			possible = available_cpus;
+			additional_cpus = 0;
+		}
+ 	} else {
+		possible = available_cpus + additional_cpus;
+	}
+	if (possible > NR_CPUS)
+		possible = NR_CPUS;
+
+	printk(KERN_INFO "SMP: Allowing %d CPUs, %d hotplug CPUs\n",
+		possible,
+	        max_t(int, additional_cpus, 0));
+
+	for (i = 0; i < possible; i++)
+		cpu_set(i, cpu_possible_map);
+}
+
 int acpi_map_lsapic(acpi_handle handle, int *pcpu)
 {
 	struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c
index 35f7835..3258e09 100644
--- a/arch/ia64/kernel/setup.c
+++ b/arch/ia64/kernel/setup.c
@@ -430,6 +430,7 @@ setup_arch (char **cmdline_p)
 	if (early_console_setup(*cmdline_p) = 0)
 		mark_bsp_online();
 
+	parse_early_param();
 #ifdef CONFIG_ACPI
 	/* Initialize the ACPI boot-time table parser */
 	acpi_table_init();
@@ -688,6 +689,9 @@ void
 setup_per_cpu_areas (void)
 {
 	/* start_kernel() requires this... */
+#ifdef CONFIG_ACPI_HOTPLUG_CPU
+	prefill_possible_map();
+#endif
 }
 
 /*
diff --git a/include/asm-ia64/acpi.h b/include/asm-ia64/acpi.h
index 3a544ff..f7a5176 100644
--- a/include/asm-ia64/acpi.h
+++ b/include/asm-ia64/acpi.h
@@ -106,6 +106,8 @@ extern unsigned int can_cpei_retarget(vo
 extern unsigned int is_cpu_cpei_target(unsigned int cpu);
 extern void set_cpei_target_cpu(unsigned int cpu);
 extern unsigned int get_cpei_target_cpu(void);
+extern void prefill_possible_map(void);
+extern int additional_cpus;
 
 #ifdef CONFIG_ACPI_NUMA
 /* Proximity bitmap length; _PXM is at most 255 (8 bit)*/

diff-tree 69aa234b918c0d9bc4a20cd6d4453aaa3418f457 (from 303794400992b907b7cac0d91788603636c7e0fe)
Author: Ashok Raj <ashok.raj@intel.com>
Date:   Tue Feb 14 15:01:11 2006 -0800

    [IA64] Dont set NR_CPUS for cpu_possible_map when CPU hotplug is enabled.
    
    Do not set cpu_possible_map for NR_CPUS when ACPI_CONFIG_HOTPLUG_CPU is set.
    
    Signed-off-by: Ashok Raj <ashok.raj@intel.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/smpboot.c b/arch/ia64/kernel/smpboot.c
index 8f44e7d..b681ef3 100644
--- a/arch/ia64/kernel/smpboot.c
+++ b/arch/ia64/kernel/smpboot.c
@@ -129,7 +129,7 @@ DEFINE_PER_CPU(int, cpu_state);
 /* Bitmasks of currently online, and possible CPUs */
 cpumask_t cpu_online_map;
 EXPORT_SYMBOL(cpu_online_map);
-cpumask_t cpu_possible_map;
+cpumask_t cpu_possible_map = CPU_MASK_NONE;
 EXPORT_SYMBOL(cpu_possible_map);
 
 cpumask_t cpu_core_map[NR_CPUS] __cacheline_aligned;
@@ -506,9 +506,6 @@ smp_build_cpu_map (void)
 
 	for (cpu = 0; cpu < NR_CPUS; cpu++) {
 		ia64_cpu_to_sapicid[cpu] = -1;
-#ifdef CONFIG_HOTPLUG_CPU
-		cpu_set(cpu, cpu_possible_map);
-#endif
 	}
 
 	ia64_cpu_to_sapicid[0] = boot_cpu_id;

^ permalink raw reply related	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (42 preceding siblings ...)
  2006-02-17  0:13 ` Luck, Tony
@ 2006-02-28 19:03 ` Luck, Tony
  2006-03-08 19:54 ` Luck, Tony
                   ` (93 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-02-28 19:03 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.  I didn't include the diffs for the
refresh of the config files.  Most of the rest are 1-2 line bugfixes and
cleanups ... the only new thing is the ia64-specific sysctl change by Jes
to end the long raging disagreement about the kernel printing warnings when
user applications access unaligned objects in memory (default is to still
print them, but this provides an option to turn the warnings off).

Thanks!

-Tony

 Documentation/kernel-parameters.txt   |    2 
 arch/ia64/configs/bigsur_defconfig    |  161 +++++++++-----
 arch/ia64/configs/gensparse_defconfig |  161 ++++++++++----
 arch/ia64/configs/sim_defconfig       |  371 +++++++++++++++++++++++++---------
 arch/ia64/configs/sn2_defconfig       |   58 +++--
 arch/ia64/configs/tiger_defconfig     |   57 +++--
 arch/ia64/configs/zx1_defconfig       |  192 +++++++++++------
 arch/ia64/defconfig                   |  177 +++++++++++-----
 arch/ia64/kernel/fsys.S               |    7 
 arch/ia64/kernel/ivt.S                |    1 
 arch/ia64/kernel/unaligned.c          |   33 ++-
 arch/ia64/pci/pci.c                   |    2 
 arch/ia64/sn/kernel/io_init.c         |    1 
 drivers/sn/Kconfig                    |    4 
 include/asm-ia64/sn/arch.h            |    3 
 include/linux/sysctl.h                |    1 
 kernel/sysctl.c                       |   14 +
 17 files changed, 880 insertions(+), 365 deletions(-)

Christoph Hellwig:
      [IA64-SGI] revert export sn_pcidev_info_get

Horms:
      [IA64] Document the "nomca" boot parameter

Jack Steiner:
      [IA64-SGI] Make number of TIO nodes configurable

Jes Sorensen:
      [IA64] show "SN Devices" menu only if CONFIG_SGI_SN
      [IA64] sysctl option to silence unaligned trap warnings

Ken Chen:
      [IA64] cleanup in fsys.S

Matthew Wilcox:
      [IA64] Fix pcibios_setup

Tony Luck:
      [IA64] die_if_kernel() can return
      [IA64] refresh default config files

Zhang, Yanmin:
      [IA64] Delete a redundant instruction in unaligned_access

diff-tree d2b176ed878d4d5fcc0bd35656dfd373f3702af9 (from c8c1635faa7c97329111ce32b927d37306521822)
Author: Jes Sorensen <jes@sgi.com>
Date:   Tue Feb 28 09:42:23 2006 -0800

    [IA64] sysctl option to silence unaligned trap warnings
    
    Allow sysadmin to disable all warnings about userland apps
    making unaligned accesses by using:
     # echo 1 > /proc/sys/kernel/ignore-unaligned-usertrap
    Rather than having to use prctl on a process by process basis.
    
    Default behaivour leaves the warnings enabled.
    
    Signed-off-by: Jes Sorensen <jes@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/unaligned.c b/arch/ia64/kernel/unaligned.c
index 1129138..1e35755 100644
--- a/arch/ia64/kernel/unaligned.c
+++ b/arch/ia64/kernel/unaligned.c
@@ -53,6 +53,15 @@ dump (const char *str, void *vp, size_t 
 #define SIGN_EXT9		0xffffffffffffff00ul
 
 /*
+ *  sysctl settable hook which tells the kernel whether to honor the
+ *  IA64_THREAD_UAC_NOPRINT prctl.  Because this is user settable, we want
+ *  to allow the super user to enable/disable this for security reasons
+ *  (i.e. don't allow attacker to fill up logs with unaligned accesses).
+ */
+int no_unaligned_warning;
+static int noprint_warning;
+
+/*
  * For M-unit:
  *
  *  opcode |   m  |   x6    |
@@ -1324,8 +1333,9 @@ ia64_handle_unaligned (unsigned long ifa
 		if ((current->thread.flags & IA64_THREAD_UAC_SIGBUS) != 0)
 			goto force_sigbus;
 
-		if (!(current->thread.flags & IA64_THREAD_UAC_NOPRINT)
-		    && within_logging_rate_limit())
+		if (!no_unaligned_warning &&
+		    !(current->thread.flags & IA64_THREAD_UAC_NOPRINT) &&
+		    within_logging_rate_limit())
 		{
 			char buf[200];	/* comm[] is at most 16 bytes... */
 			size_t len;
@@ -1340,7 +1350,22 @@ ia64_handle_unaligned (unsigned long ifa
 			if (user_mode(regs))
 				tty_write_message(current->signal->tty, buf);
 			buf[len-1] = '\0';	/* drop '\r' */
-			printk(KERN_WARNING "%s", buf);	/* watch for command names containing %s */
+			/* watch for command names containing %s */
+			printk(KERN_WARNING "%s", buf);
+		} else {
+			if (no_unaligned_warning && !noprint_warning) {
+				noprint_warning = 1;
+				printk(KERN_WARNING "%s(%d) encountered an "
+				       "unaligned exception which required\n"
+				       "kernel assistance, which degrades "
+				       "the performance of the application.\n"
+				       "Unaligned exception warnings have "
+				       "been disabled by the system "
+				       "administrator\n"
+				       "echo 0 > /proc/sys/kernel/ignore-"
+				       "unaligned-usertrap to re-enable\n",
+				       current->comm, current->pid);
+			}
 		}
 	} else {
 		if (within_logging_rate_limit())
diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h
index 0e92bf7..bac61db 100644
--- a/include/linux/sysctl.h
+++ b/include/linux/sysctl.h
@@ -147,6 +147,7 @@ enum
 	KERN_SETUID_DUMPABLEi, /* int: behaviour of dumps for setuid core */
 	KERN_SPIN_RETRYp,	/* int: number of spinlock retries */
 	KERN_ACPI_VIDEO_FLAGSq, /* int: flags for setting up video after ACPI sleep */
+	KERN_IA64_UNALIGNEDr, /* int: ia64 unaligned userland trap enable */
 };
 
 
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index c05a2b7..acf6c15 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -124,6 +124,10 @@ extern int sysctl_hz_timer;
 extern int acct_parm[];
 #endif
 
+#ifdef CONFIG_IA64
+extern int no_unaligned_warning;
+#endif
+
 static int parse_table(int __user *, int, void __user *, size_t __user *, void __user *, size_t,
 		       ctl_table *, void **);
 static int proc_doutsstring(ctl_table *table, int write, struct file *filp,
@@ -666,6 +670,16 @@ static ctl_table kern_table[] = {
 		.proc_handler	= &proc_dointvec,
 	},
 #endif
+#ifdef CONFIG_IA64
+	{
+		.ctl_name	= KERN_IA64_UNALIGNED,
+		.procname	= "ignore-unaligned-usertrap",
+		.data		= &no_unaligned_warning,
+		.maxlen		= sizeof (int),
+	 	.mode		= 0644,
+		.proc_handler	= &proc_dointvec,
+	},
+#endif
 	{ .ctl_name = 0 }
 };
 

diff-tree c8c1635faa7c97329111ce32b927d37306521822 (from 9fe26a74f1e355dd707f09f9e5e9f035bcc6bae2)
Author: Ken Chen <kenneth.w.chen@intel.com>
Date:   Tue Feb 28 08:53:32 2006 -0800

    [IA64] cleanup in fsys.S
    
    beautify coding style for zeroing end of fsyscall_table entries.
    Remove misleading __NR_syscall_last and add more comments.
    Drop (now unneeded) "guard against failure to increase NR_syscalls"
    
    Signed-off-by: Ken Chen <kenneth.w.chen@intel.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/fsys.S b/arch/ia64/kernel/fsys.S
index ac6055c..7a05b1c 100644
--- a/arch/ia64/kernel/fsys.S
+++ b/arch/ia64/kernel/fsys.S
@@ -878,8 +878,7 @@ fsyscall_table:
 	data8 0				// timer_delete
 	data8 0				// clock_settime
 	data8 fsys_clock_gettime	// clock_gettime
-	#define __NR_syscall_last	1255
 
-	.space 8*(NR_syscalls + 1024 - __NR_syscall_last), 0
-
-	.org fsyscall_table + 8*NR_syscalls	// guard against failures to increase NR_syscalls
+	// fill in zeros for the remaining entries
+	.zero:
+	.space fsyscall_table + 8*NR_syscalls - .zero, 0

diff-tree e963701a761aede31c9c1bfc74cf8e0ec671f0f4 (from eb0911e27e8c6778d6c8ec95b7dd60c002d923c3)
Author: Tony Luck <tony.luck@intel.com>
Date:   Mon Feb 27 16:18:58 2006 -0800

    [IA64] die_if_kernel() can return
    
    arch/ia64/kernel/unaligned.c erroneously marked die_if_kernel()
    with a "noreturn" attribute ... which is silly (it returns whenever
    the argument regs say that the fault happened in user mode, as one
    might expect given the "if_kernel" part of its name!).  Thanks to
    Alan and Gareth for pointing this out.
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/unaligned.c b/arch/ia64/kernel/unaligned.c
index f9e0ae9..1129138 100644
--- a/arch/ia64/kernel/unaligned.c
+++ b/arch/ia64/kernel/unaligned.c
@@ -24,7 +24,7 @@
 #include <asm/uaccess.h>
 #include <asm/unaligned.h>
 
-extern void die_if_kernel(char *str, struct pt_regs *regs, long err) __attribute__ ((noreturn));
+extern void die_if_kernel(char *str, struct pt_regs *regs, long err);
 
 #undef DEBUG_UNALIGNED_TRAP
 

diff-tree eb0911e27e8c6778d6c8ec95b7dd60c002d923c3 (from ac311ac2b7caca000b1501fd24136bdca30e2a51)
Author: Christoph Hellwig <hch@infradead.org>
Date:   Tue Feb 21 10:48:41 2006 +0000

    [IA64-SGI] revert export sn_pcidev_info_get
    
    Christoph Hellwig <hch@infradead.org> pointed that there are no
    in-tree uses of this.  So revert 9c65cb9be62ac4993a5b392304b82e4f04f010fd
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/sn/kernel/io_init.c b/arch/ia64/sn/kernel/io_init.c
index 3edef0d..dfb3f29 100644
--- a/arch/ia64/sn/kernel/io_init.c
+++ b/arch/ia64/sn/kernel/io_init.c
@@ -716,4 +716,3 @@ EXPORT_SYMBOL(sn_pci_unfixup_slot);
 EXPORT_SYMBOL(sn_pci_controller_fixup);
 EXPORT_SYMBOL(sn_bus_store_sysdata);
 EXPORT_SYMBOL(sn_bus_free_sysdata);
-EXPORT_SYMBOL(sn_pcidev_info_get);

diff-tree ac311ac2b7caca000b1501fd24136bdca30e2a51 (from 18810d1ebac89232d8f218a318ed9ff7ef198e96)
Author: Matthew Wilcox <matthew@wil.cx>
Date:   Fri Feb 24 12:46:23 2006 -0700

    [IA64] Fix pcibios_setup
    
    pcibios_setup() should return NULL if it handled a parameter.  Since ia64
    handles no parameters, it should return the string that was passed in,
    not NULL.  This brings ia64 into line with all other architectures that
    handle no parameters.
    
    Signed-off-by: Matthew Wilcox <matthew@wil.cx>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c
index 0b30ca0..9ba32b2 100644
--- a/arch/ia64/pci/pci.c
+++ b/arch/ia64/pci/pci.c
@@ -579,7 +579,7 @@ pcibios_align_resource (void *data, stru
 char * __init
 pcibios_setup (char *str)
 {
-	return NULL;
+	return str;
 }
 
 int

diff-tree 18810d1ebac89232d8f218a318ed9ff7ef198e96 (from 312f1f0141627a58bf72c55f0e7bc5d6f118a372)
Author: Jack Steiner <steiner@sgi.com>
Date:   Thu Feb 23 13:16:44 2006 -0600

    [IA64-SGI] Make number of TIO nodes configurable
    
    Make the limit for the number of TIO nodes a function of the number
    of C/M nodes in the system instead of a hardcoded constant.  The
    number of TIO nodes should be the same as the number of C/M nodes.
    
    Signed-off-by: Jack Steiner <steiner@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/include/asm-ia64/sn/arch.h b/include/asm-ia64/sn/arch.h
index 91c31be..16adc93 100644
--- a/include/asm-ia64/sn/arch.h
+++ b/include/asm-ia64/sn/arch.h
@@ -31,7 +31,8 @@
  * 	to ACPI3.0, this limit will be removed. The notion of "compact nodes"
  * 	should be deleted and TIOs should be included in MAX_NUMNODES.
  */
-#define MAX_COMPACT_NODES	512
+#define MAX_TIO_NODES		MAX_NUMNODES
+#define MAX_COMPACT_NODES	(MAX_NUMNODES + MAX_TIO_NODES)
 
 /*
  * Maximum number of nodes in all partitions and in all coherency domains.

diff-tree 312f1f0141627a58bf72c55f0e7bc5d6f118a372 (from 5d1a88af826b03edaac4d2bd2f25af56a54f26e6)
Author: Horms <horms@verge.net.au>
Date:   Wed Feb 22 09:57:55 2006 +0900

    [IA64] Document the "nomca" boot parameter
    
    "nomca" can be used to disable machine check handling
    
    Signed-Off-By: Horms <horms@verge.net.au>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index b874771..7520539 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1034,6 +1034,8 @@ running once the system is up.
 
 	nomce		[IA-32] Machine Check Exception
 
+	nomca		[IA-64] Disable machine check abort handling
+
 	noresidual	[PPC] Don't use residual data on PReP machines.
 
 	noresume	[SWSUSP] Disables resume and restores original swap

diff-tree 5d1a88af826b03edaac4d2bd2f25af56a54f26e6 (from 50e300dead8dadf32e930ebd80d9810d631aa1a0)
Author: Zhang, Yanmin <yanmin_zhang@linux.intel.com>
Date:   Fri Feb 17 12:23:09 2006 +0800

    [IA64] Delete a redundant instruction in unaligned_access
    
    unaligned_access does fetch cr.ipsr, then calls
    dispatch_unaligned_handler, but dispatch_unaligned_handler fetches
    cr.ipsr again, so delete the first one.
    
    Signed-off-by: Zhang Yanmin <yanmin.zhang@intel.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/ivt.S b/arch/ia64/kernel/ivt.S
index 301f2e9..9f80569 100644
--- a/arch/ia64/kernel/ivt.S
+++ b/arch/ia64/kernel/ivt.S
@@ -1362,7 +1362,6 @@ END(debug_vector)
 // 0x5a00 Entry 30 (size 16 bundles) Unaligned Reference (57)
 ENTRY(unaligned_access)
 	DBG_FAULT(30)
-	mov r16=cr.ipsr
 	mov r31=pr		// prepare to save predicates
 	;;
 	br.sptk.many dispatch_unaligned_handler

diff-tree 50e300dead8dadf32e930ebd80d9810d631aa1a0 (from e95a9ec1bb66e07b138861c743192f06e7b3e4de)
Author: Jes Sorensen <jes@sgi.com>
Date:   Fri Feb 17 10:25:39 2006 -0500

    [IA64] show "SN Devices" menu only if CONFIG_SGI_SN
    
    Adrian> On architectures like i386, the "Multimedia Capabilities Port
    Adrian> drivers" menu is visible, but it can't be visited since it
    Adrian> contains nothing usable for CONFIG_SGI_SN=n.
    
    Jes> Thats only a third of the patch, if you want to do that, you should
    Jes> remove the redundant SGI_SN checks below.
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/drivers/sn/Kconfig b/drivers/sn/Kconfig
index d95265b..a347316 100644
--- a/drivers/sn/Kconfig
+++ b/drivers/sn/Kconfig
@@ -3,10 +3,11 @@
 #
 
 menu "SN Devices"
+	depends on SGI_SN
 
 config SGI_IOC4
 	tristate "SGI IOC4 Base IO support"
-	depends on (IA64_GENERIC || IA64_SGI_SN2) && MMTIMER
+	depends on MMTIMER
 	default m
 	---help---
 	This option enables basic support for the SGI IOC4-based Base IO
@@ -19,7 +20,6 @@ config SGI_IOC4
 
 config SGI_IOC3
 	tristate "SGI IOC3 Base IO support"
-	depends on (IA64_GENERIC || IA64_SGI_SN2)
 	default m
 	---help---
 	This option enables basic support for the SGI IOC3-based Base IO

^ permalink raw reply related	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (43 preceding siblings ...)
  2006-02-28 19:03 ` Luck, Tony
@ 2006-03-08 19:54 ` Luck, Tony
  2006-03-08 20:01 ` Matthew Wilcox
                   ` (92 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-03-08 19:54 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/configs/gensparse_defconfig |   12 ++++++++++--
 arch/ia64/kernel/cyclone.c            |    2 +-
 arch/ia64/kernel/mca_drv.c            |   16 +++++++++++-----
 arch/ia64/sn/kernel/sn2/sn2_smp.c     |    2 +-
 arch/ia64/sn/kernel/tiocx.c           |    2 +-
 drivers/char/mmtimer.c                |    2 +-
 drivers/serial/sn_console.c           |    2 +-
 7 files changed, 26 insertions(+), 12 deletions(-)

Bjorn Helgaas:
      [IA64] gensparse_defconfig: turn on PNPACPI
      [IA64] don't report !sn2 or !summit hardware as an error
      [IA64] SGI SN drivers: don't report !sn2 hardware as an error

Russ Anderson:
      [IA64] Increase severity of MCA recovery messages
      [IA64] mca recovery return value when no bus check

diff-tree e1c48554ae295de984eee83a7798e7fb394a1629 (from f032f90809ebbbd28feb90f97add2e0a869a42ed)
Author: Russ Anderson <rja@efs.americas.sgi.com>
Date:   Fri Mar 3 16:42:26 2006 -0600

    [IA64] mca recovery return value when no bus check
    
    When there is no bus check, the return code should be failure, not success.
    
    Signed-off-by: Russ Anderson (rja@sgi.com)
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/mca_drv.c b/arch/ia64/kernel/mca_drv.c
index 53ffb06..e883d85 100644
--- a/arch/ia64/kernel/mca_drv.c
+++ b/arch/ia64/kernel/mca_drv.c
@@ -568,10 +568,15 @@ recover_from_processor_error(int platfor
 		return 0;
 
 	/*
-	 * If there is no bus error, record is weird but we need not to recover.
+	 * The cache check and bus check bits have four possible states
+	 *   cc bc
+	 *    0  0	Weird record, not recovered
+	 *    1  0	Cache error, not recovered
+	 *    0  1	I/O error, attempt recovery
+	 *    1  1	Memory error, attempt recovery
 	 */
 	if (psp->bc = 0 || pbci = NULL)
-		return 1;
+		return 0;
 
 	/*
 	 * Sorry, we cannot handle so many.

diff-tree f032f90809ebbbd28feb90f97add2e0a869a42ed (from 6c5e62159cdef89d8385958c9d8c88efa867110c)
Author: Bjorn Helgaas <bjorn.helgaas@hp.com>
Date:   Fri Mar 3 15:34:34 2006 -0700

    [IA64] SGI SN drivers: don't report !sn2 hardware as an error
    
    This stuff is all in the generic ia64 kernel, and the new initcall error
    reporting complains about them.
    
    Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/drivers/char/mmtimer.c b/drivers/char/mmtimer.c
index c923781..1b05fa6 100644
--- a/drivers/char/mmtimer.c
+++ b/drivers/char/mmtimer.c
@@ -675,7 +675,7 @@ static int __init mmtimer_init(void)
 	cnodeid_t node, maxn = -1;
 
 	if (!ia64_platform_is("sn2"))
-		return -1;
+		return 0;
 
 	/*
 	 * Sanity check the cycles/sec variable
diff --git a/drivers/serial/sn_console.c b/drivers/serial/sn_console.c
index 43e67d6..60ea4a3 100644
--- a/drivers/serial/sn_console.c
+++ b/drivers/serial/sn_console.c
@@ -820,7 +820,7 @@ static int __init sn_sal_module_init(voi
 	int retval;
 
 	if (!ia64_platform_is("sn2"))
-		return -ENODEV;
+		return 0;
 
 	printk(KERN_INFO "sn_console: Console driver init\n");
 

diff-tree 6c5e62159cdef89d8385958c9d8c88efa867110c (from 57ebc9918f8747c9db7e65659dfd632d4db99e3a)
Author: Bjorn Helgaas <bjorn.helgaas@hp.com>
Date:   Fri Mar 3 15:33:47 2006 -0700

    [IA64] don't report !sn2 or !summit hardware as an error
    
    This stuff is all in the generic ia64 kernel, and the new initcall error
    reporting complains about them.
    
    Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/cyclone.c b/arch/ia64/kernel/cyclone.c
index 6ade379..e00b215 100644
--- a/arch/ia64/kernel/cyclone.c
+++ b/arch/ia64/kernel/cyclone.c
@@ -36,7 +36,7 @@ int __init init_cyclone_clock(void)
 	u32* volatile cyclone_timer;	/* Cyclone MPMC0 register */
 
 	if (!use_cyclone)
-		return -ENODEV;
+		return 0;
 
 	printk(KERN_INFO "Summit chipset: Starting Cyclone Counter.\n");
 
diff --git a/arch/ia64/sn/kernel/sn2/sn2_smp.c b/arch/ia64/sn/kernel/sn2/sn2_smp.c
index 24eefb2..b2e1e74 100644
--- a/arch/ia64/sn/kernel/sn2/sn2_smp.c
+++ b/arch/ia64/sn/kernel/sn2/sn2_smp.c
@@ -446,7 +446,7 @@ static struct proc_dir_entry *proc_sn2_p
 static int __init sn2_ptc_init(void)
 {
 	if (!ia64_platform_is("sn2"))
-		return -ENOSYS;
+		return 0;
 
 	if (!(proc_sn2_ptc = create_proc_entry(PTC_BASENAME, 0444, NULL))) {
 		printk(KERN_ERR "unable to create %s proc entry", PTC_BASENAME);
diff --git a/arch/ia64/sn/kernel/tiocx.c b/arch/ia64/sn/kernel/tiocx.c
index 8a56f8b..99cb28e 100644
--- a/arch/ia64/sn/kernel/tiocx.c
+++ b/arch/ia64/sn/kernel/tiocx.c
@@ -484,7 +484,7 @@ static int __init tiocx_init(void)
 	int found_tiocx_device = 0;
 
 	if (!ia64_platform_is("sn2"))
-		return -ENODEV;
+		return 0;
 
 	bus_register(&tiocx_bus_type);
 

diff-tree 57ebc9918f8747c9db7e65659dfd632d4db99e3a (from ea0e92a613a1caf85583c83cd131cef7d0f5571d)
Author: Bjorn Helgaas <bjorn.helgaas@hp.com>
Date:   Thu Mar 2 16:59:50 2006 -0700

    [IA64] gensparse_defconfig: turn on PNPACPI
    
    Turn on CONFIG_PNPACPI.  I recently removed 8250_acpi.c.  All devices
    previously claimed by 8250_acpi.c should now be claimed by 8250_pnp.c.
    This depends on having CONFIG_PNPACPI so ACPI devices show up as PNP
    devices.
    
    All other ia64 defconfigs either have CONFIG_PNPACPI already, or
    don't have 8250 support turned on at all.
    
    Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/configs/gensparse_defconfig b/arch/ia64/configs/gensparse_defconfig
index 184678f..744fd2f 100644
--- a/arch/ia64/configs/gensparse_defconfig
+++ b/arch/ia64/configs/gensparse_defconfig
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Linux kernel version: 2.6.16-rc5
-# Mon Feb 27 16:15:43 2006
+# Thu Mar  2 16:39:10 2006
 #
 
 #
@@ -312,7 +312,13 @@ CONFIG_FW_LOADER=m
 #
 # Plug and Play support
 #
-# CONFIG_PNP is not set
+CONFIG_PNP=y
+# CONFIG_PNP_DEBUG is not set
+
+#
+# Protocols
+#
+CONFIG_PNPACPI=y
 
 #
 # Block devices
@@ -357,6 +363,7 @@ CONFIG_BLK_DEV_IDESCSI=m
 # IDE chipset support/bugfixes
 #
 CONFIG_IDE_GENERIC=y
+# CONFIG_BLK_DEV_IDEPNP is not set
 CONFIG_BLK_DEV_IDEPCI=y
 # CONFIG_IDEPCI_SHARE_IRQ is not set
 # CONFIG_BLK_DEV_OFFBOARD is not set
@@ -525,6 +532,7 @@ CONFIG_DUMMY=m
 # CONFIG_BONDING is not set
 # CONFIG_EQUALIZER is not set
 # CONFIG_TUN is not set
+# CONFIG_NET_SB1000 is not set
 
 #
 # ARCnet devices

diff-tree ea0e92a613a1caf85583c83cd131cef7d0f5571d (from d0b004840bd3b5ff2f2a0ad14fa0bd43349f5175)
Author: Russ Anderson <rja@sgi.com>
Date:   Tue Mar 7 15:23:25 2006 -0800

    [IA64] Increase severity of MCA recovery messages
    
    The MCA recovery messages are currently KERN_DEBUG,
    so they don't show up in /var/log/messages (by default).
    Increase the severity to KERN_ERR, for the initial
    message (and also add the physical address to this
    message). Leave the successful isolation message as
    KERN_DEBUG, but increase the severity when isolation
    fails to KERN_CRIT.
    
    [Russ' patch made these all KERN_CRIT]
    
    Signed-off-by: Russ Anderson (rja@sgi.com)
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/mca_drv.c b/arch/ia64/kernel/mca_drv.c
index 8fd93af..53ffb06 100644
--- a/arch/ia64/kernel/mca_drv.c
+++ b/arch/ia64/kernel/mca_drv.c
@@ -123,8 +123,9 @@ mca_page_isolate(unsigned long paddr)
 void
 mca_handler_bh(unsigned long paddr)
 {
-	printk(KERN_DEBUG "OS_MCA: process [pid: %d](%s) encounters MCA.\n",
-		current->pid, current->comm);
+	printk(KERN_ERR
+		"OS_MCA: process [pid: %d](%s) encounters MCA (paddr=%lx)\n",
+		current->pid, current->comm, paddr);
 
 	spin_lock(&mca_bh_lock);
 	switch (mca_page_isolate(paddr)) {
@@ -132,7 +133,7 @@ mca_handler_bh(unsigned long paddr)
 		printk(KERN_DEBUG "Page isolation: ( %lx ) success.\n", paddr);
 		break;
 	case ISOLATE_NG:
-		printk(KERN_DEBUG "Page isolation: ( %lx ) failure.\n", paddr);
+		printk(KERN_CRIT "Page isolation: ( %lx ) failure.\n", paddr);
 		break;
 	default:
 		break;

^ permalink raw reply related	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (44 preceding siblings ...)
  2006-03-08 19:54 ` Luck, Tony
@ 2006-03-08 20:01 ` Matthew Wilcox
  2006-03-08 20:47 ` Luck, Tony
                   ` (91 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Matthew Wilcox @ 2006-03-08 20:01 UTC (permalink / raw)
  To: linux-ia64

On Wed, Mar 08, 2006 at 11:54:26AM -0800, Luck, Tony wrote:
> Bjorn Helgaas:
>       [IA64] don't report !sn2 or !summit hardware as an error
>       [IA64] SGI SN drivers: don't report !sn2 hardware as an error

I  thought hch solved  this by  fixing  the initcall  code  to  not
treat -ENODEV as an error  worthy of  reporting?

^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (45 preceding siblings ...)
  2006-03-08 20:01 ` Matthew Wilcox
@ 2006-03-08 20:47 ` Luck, Tony
  2006-03-08 21:56 ` Bjorn Helgaas
                   ` (90 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-03-08 20:47 UTC (permalink / raw)
  To: linux-ia64

>On Wed, Mar 08, 2006 at 11:54:26AM -0800, Luck, Tony wrote:
>> Bjorn Helgaas:
>>       [IA64] don't report !sn2 or !summit hardware as an error
>>       [IA64] SGI SN drivers: don't report !sn2 hardware as an error
>
>I  thought hch solved  this by  fixing  the initcall  code  to  not
>treat -ENODEV as an error  worthy of  reporting?

That's what happens when I get far, far behind on LKML.  I've found
traces of the threads ... though none by hch, and no clear agreement
about whether 0 or -ENODEV is right.  Some of this code is linked
into the ia64 generic kernel by default, so I'm leaning a little
towards Bjorn's position that we shouldn't be returning an error.

-Tony

^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (46 preceding siblings ...)
  2006-03-08 20:47 ` Luck, Tony
@ 2006-03-08 21:56 ` Bjorn Helgaas
  2006-03-09  9:50 ` Jes Sorensen
                   ` (89 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Bjorn Helgaas @ 2006-03-08 21:56 UTC (permalink / raw)
  To: linux-ia64

On Wednesday 08 March 2006 13:47, Luck, Tony wrote:
> >On Wed, Mar 08, 2006 at 11:54:26AM -0800, Luck, Tony wrote:
> >> Bjorn Helgaas:
> >>       [IA64] don't report !sn2 or !summit hardware as an error
> >>       [IA64] SGI SN drivers: don't report !sn2 hardware as an error
> >
> >I  thought hch solved  this by  fixing  the initcall  code  to  not
> >treat -ENODEV as an error  worthy of  reporting?
> 
> That's what happens when I get far, far behind on LKML.  I've found
> traces of the threads ... though none by hch, and no clear agreement
> about whether 0 or -ENODEV is right.  Some of this code is linked
> into the ia64 generic kernel by default, so I'm leaning a little
> towards Bjorn's position that we shouldn't be returning an error.

There are a ton of drivers that just return the result of
pci_register_driver().  This is typically zero, even when
no devices are present.

There are also some drivers that return -ENODEV when no devices
are present.

Personally, I think the first style is best, and we should deal
with the problem of loading the right drivers a different way,
e.g., with udev.  But others disagree:

    http://lkml.org/lkml/2006/3/7/159

^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (47 preceding siblings ...)
  2006-03-08 21:56 ` Bjorn Helgaas
@ 2006-03-09  9:50 ` Jes Sorensen
  2006-03-11  0:34 ` Luck, Tony
                   ` (88 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Jes Sorensen @ 2006-03-09  9:50 UTC (permalink / raw)
  To: linux-ia64

>>>>> "Matthew" = Matthew Wilcox <matthew@wil.cx> writes:

Matthew> On Wed, Mar 08, 2006 at 11:54:26AM -0800, Luck, Tony wrote:
>> Bjorn Helgaas: [IA64] don't report !sn2 or !summit hardware as an
>> error [IA64] SGI SN drivers: don't report !sn2 hardware as an error

Matthew> I thought hch solved this by fixing the initcall code to not
Matthew> treat -ENODEV as an error worthy of reporting?

I agree, I think it's a bit unfortunate this was pushed upstream
before a decision was made.

IMHO it's correct to report -ENODEV if no device is present and have a
module auto-unload in that case.

Cheers,
Jes

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (48 preceding siblings ...)
  2006-03-09  9:50 ` Jes Sorensen
@ 2006-03-11  0:34 ` Luck, Tony
  2006-03-21 18:55 ` Luck, Tony
                   ` (87 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-03-11  0:34 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/kernel/ivt.S |   15 +++++++++------
 1 files changed, 9 insertions(+), 6 deletions(-)

Christoph Lameter:
      [IA64] Fix race in the accessed/dirty bit handlers

diff-tree d8117ce5a679ff1f48df247da30fb62c16d562c5 (from 2ec5e3a867d63d04932e11c6097f63760d9be3fe)
Author: Christoph Lameter <clameter@engr.sgi.com>
Date:   Tue Mar 7 19:05:32 2006 -0800

    [IA64] Fix race in the accessed/dirty bit handlers
    
    A pte may be zapped by the swapper, exiting process, unmapping or page
    migration while the accessed or dirty bit handers are about to run. In that
    case the accessed bit or dirty is set on an zeroed pte which leads the VM to
    conclude that this is a swap pte. This may lead to
    
    - Messages from the vm like
    
    swap_free: Bad swap file entry 4000000000000000
    
    - Processes being aborted
    
    swap_dup: Bad swap file entry 4000000000000000
    VM: killing process ....
    
    Page migration is particular suitable for the creation of this race since
    it needs to remove and restore page table entries.
    
    The fix here is to check for the present bit and simply not update
    the pte if the page is not present anymore. If the page is not present
    then the fault handler should run next which will take care of the problem
    by bringing the page back and then mark the page dirty or move it onto the
    active list.
    
    Signed-off-by: Christoph Lameter <clameter@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/ivt.S b/arch/ia64/kernel/ivt.S
index 9f80569..dcd906f 100644
--- a/arch/ia64/kernel/ivt.S
+++ b/arch/ia64/kernel/ivt.S
@@ -561,11 +561,12 @@ ENTRY(dirty_bit)
 	;;					// avoid RAW on r18
 	mov ar.ccv=r18				// set compare value for cmpxchg
 	or r25=_PAGE_D|_PAGE_A,r18		// set the dirty and accessed bits
+	tbit.z p7,p6 = r18,_PAGE_P_BIT		// Check present bit
 	;;
-	cmpxchg8.acq r26=[r17],r25,ar.ccv
+(p6)	cmpxchg8.acq r26=[r17],r25,ar.ccv	// Only update if page is present
 	mov r24=PAGE_SHIFT<<2
 	;;
-	cmp.eq p6,p7=r26,r18
+(p6)	cmp.eq p6,p7=r26,r18			// Only compare if page is present
 	;;
 (p6)	itc.d r25				// install updated PTE
 	;;
@@ -626,11 +627,12 @@ ENTRY(iaccess_bit)
 	;;
 	mov ar.ccv=r18				// set compare value for cmpxchg
 	or r25=_PAGE_A,r18			// set the accessed bit
+	tbit.z p7,p6 = r18,_PAGE_P_BIT	 	// Check present bit
 	;;
-	cmpxchg8.acq r26=[r17],r25,ar.ccv
+(p6)	cmpxchg8.acq r26=[r17],r25,ar.ccv	// Only if page present
 	mov r24=PAGE_SHIFT<<2
 	;;
-	cmp.eq p6,p7=r26,r18
+(p6)	cmp.eq p6,p7=r26,r18			// Only if page present
 	;;
 (p6)	itc.i r25				// install updated PTE
 	;;
@@ -680,11 +682,12 @@ ENTRY(daccess_bit)
 	;;					// avoid RAW on r18
 	mov ar.ccv=r18				// set compare value for cmpxchg
 	or r25=_PAGE_A,r18			// set the dirty bit
+	tbit.z p7,p6 = r18,_PAGE_P_BIT		// Check present bit
 	;;
-	cmpxchg8.acq r26=[r17],r25,ar.ccv
+(p6)	cmpxchg8.acq r26=[r17],r25,ar.ccv	// Only if page is present
 	mov r24=PAGE_SHIFT<<2
 	;;
-	cmp.eq p6,p7=r26,r18
+(p6)	cmp.eq p6,p7=r26,r18			// Only if page is present
 	;;
 (p6)	itc.d r25				// install updated PTE
 	/*

^ permalink raw reply related	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (49 preceding siblings ...)
  2006-03-11  0:34 ` Luck, Tony
@ 2006-03-21 18:55 ` Luck, Tony
  2006-03-24 22:57 ` Luck, Tony
                   ` (86 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-03-21 18:55 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.  These are the patches that have been
cooking in -mm.

Thanks!

-Tony

 arch/ia64/Kconfig                   |   19 ++
 arch/ia64/configs/tiger_defconfig   |    2 
 arch/ia64/kernel/acpi.c             |   14 +
 arch/ia64/kernel/entry.S            |   14 -
 arch/ia64/kernel/iosapic.c          |   10 -
 arch/ia64/kernel/irq.c              |   13 +
 arch/ia64/kernel/mca.c              |   90 ++++++---
 arch/ia64/kernel/perfmon.c          |    5 
 arch/ia64/kernel/signal.c           |  101 -----------
 arch/ia64/kernel/smpboot.c          |  114 +++++++++++-
 arch/ia64/kernel/time.c             |    9 
 arch/ia64/kernel/topology.c         |    2 
 arch/ia64/mm/contig.c               |    4 
 arch/ia64/mm/discontig.c            |    9 
 arch/ia64/sn/kernel/Makefile        |    3 
 arch/ia64/sn/kernel/pio_phys.S      |   71 +++++++
 arch/ia64/sn/kernel/setup.c         |    6 
 arch/ia64/sn/kernel/sn2/sn2_smp.c   |   23 ++
 arch/ia64/sn/kernel/xpc_channel.c   |  102 ++++++-----
 arch/ia64/sn/kernel/xpc_main.c      |    1 
 arch/ia64/sn/kernel/xpc_partition.c |   28 ++-
 arch/ia64/sn/pci/tioce_provider.c   |  326 +++++++++++++++++++++++++++++++++---
 drivers/char/snsc.h                 |    5 
 drivers/char/snsc_event.c           |   32 ++-
 drivers/sn/ioc4.c                   |   41 +---
 include/asm-ia64/intel_intrin.h     |  134 +-------------
 include/asm-ia64/machvec.h          |   13 +
 include/asm-ia64/machvec_sn2.h      |    4 
 include/asm-ia64/mca.h              |    2 
 include/asm-ia64/mutex.h            |   93 +++++++++-
 include/asm-ia64/processor.h        |    3 
 include/asm-ia64/signal.h           |    2 
 include/asm-ia64/sn/addrs.h         |    8 
 include/asm-ia64/sn/rw_mmr.h        |   56 ------
 include/asm-ia64/sn/tioce.h         |   36 +++
 include/asm-ia64/sn/xpc.h           |   22 --
 include/asm-ia64/system.h           |    7 
 include/asm-ia64/thread_info.h      |   12 -
 38 files changed, 955 insertions(+), 481 deletions(-)

Aaron Young:
      [IA64-SGI] Handle SC env. powerdown events

Ashok Raj:
      [IA64] support for cpu0 removal
      [IA64] Fix UP build with BSP removal support.

Brent Casavant:
      [IA64] hooks to wait for mmio writes to drain when migrating processes

Chen, Kenneth W:
      [IA64] implement ia64 specific mutex primitives
      [IA64] map ia64_hint definition to intel compiler intrinsic
      [IA64] clean up asm/intel_intrin.h
      [IA64] add __builtin_trap definition for icc build
      [IA64] use icc defined constant

Jack Steiner:
      [IA64-SGI] - Eliminate SN pio_phys_xxx macros. Move to assembly

Jes Sorensen:
      [IA64-SGI] sem2mutex ioc4.c
      [IA64-SGI] SN2-XP reduce kmalloc wrapper inlining

Keith Owens:
      [IA64] Delete MCA/INIT sigdelayed code
      [IA64] MCA: print messages in MCA handler
      [IA64] MCA: update MCA comm field for user space tasks
      [IA64] MCA: remove obsolete ifdef

Mark Maule:
      [IA64-SGI] driver bugfixes and hardware workarounds for CE1.0 asic

Tony Luck:
      Pull bsp-removal into release branch
      Pull delete-sigdelayed into release branch
      Pull sn2-mmio-writes into release branch
      Pull mca-cleanup into release branch


^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (50 preceding siblings ...)
  2006-03-21 18:55 ` Luck, Tony
@ 2006-03-24 22:57 ` Luck, Tony
  2006-03-24 23:01 ` Luck, Tony
                   ` (85 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-03-24 22:57 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/Kconfig                       |    9 ++
 arch/ia64/configs/gensparse_defconfig   |    1 
 arch/ia64/configs/sn2_defconfig         |    1 
 arch/ia64/defconfig                     |    1 
 arch/ia64/dig/setup.c                   |    5 -
 arch/ia64/kernel/acpi.c                 |   35 +++++++++-
 arch/ia64/kernel/ivt.S                  |    1 
 arch/ia64/kernel/machvec.c              |   19 ++++-
 arch/ia64/kernel/mca.c                  |  110 ++++++++++++++++++++++----------
 arch/ia64/kernel/mca_drv.c              |   22 ++++--
 arch/ia64/kernel/mca_drv.h              |    7 ++
 arch/ia64/kernel/mca_drv_asm.S          |   13 +--
 arch/ia64/kernel/numa.c                 |    2 
 arch/ia64/kernel/patch.c                |    8 +-
 arch/ia64/kernel/setup.c                |   60 ++++++-----------
 arch/ia64/kernel/smpboot.c              |  109 +------------------------------
 arch/ia64/kernel/vmlinux.lds.S          |   60 ++++++++++-------
 arch/ia64/mm/contig.c                   |    8 +-
 arch/ia64/mm/discontig.c                |    2 
 arch/ia64/mm/hugetlbpage.c              |    7 --
 arch/ia64/mm/init.c                     |   16 ++--
 arch/ia64/sn/kernel/io_init.c           |   29 ++++++++
 arch/ia64/sn/kernel/irq.c               |   21 ------
 arch/ia64/sn/kernel/tiocx.c             |   10 ++
 arch/ia64/sn/pci/pcibr/pcibr_provider.c |   17 ++++
 include/asm-ia64/acpi.h                 |    4 +
 include/asm-ia64/asmmacro.h             |   11 +++
 include/asm-ia64/machvec_dig.h          |    2 
 include/asm-ia64/numa.h                 |    2 
 include/asm-ia64/numnodes.h             |   13 ++-
 include/asm-ia64/page.h                 |    2 
 include/asm-ia64/pal.h                  |    3 
 include/asm-ia64/processor.h            |    1 
 include/asm-ia64/sn/l1.h                |    3 
 include/asm-ia64/sn/pcibr_provider.h    |    1 
 include/asm-ia64/sn/pcidev.h            |    1 
 include/asm-ia64/sn/sn_feature_sets.h   |    3 
 include/asm-ia64/sn/sn_sal.h            |   24 ++++--
 38 files changed, 349 insertions(+), 294 deletions(-)

Bjorn Helgaas:
      [IA64] sn_check_intr: use ia64_get_irr()

Chen, Kenneth W:
      [IA64] fix ia64 is_hugepage_only_range
      [IA64] add __init declaration to mca functions
      [IA64] add init declaration to cpu initialization functions
      [IA64] add init declaration to memory initialization functions
      [IA64] add init declaration - gate page functions
      [IA64] add init declaration - nolwsys
      [IA64] move patchlist and machvec into init section
      [IA64] cleanup dig_irq_init

Fenghua Yu:
      [IA64] New IA64 core/thread detection patch

Horms:
      IA64: Use early_parm to handle mvec_name and nomca

Jack Steiner:
      [IA64] Increase max node count on SN platforms
      [IA64] Increase max node count on SN platforms
      [IA64] Increase max node count on SN platforms
      [IA64] Increase max node count on SN platforms

Kenji Kaneshige:
      [IA64] Ignore disabled Local SAPIC Affinity Structure in SRAT

Prarit Bhargava:
      [IA64] Tollhouse HP: IA64 arch changes

Russ Anderson:
      [IA64] MCA recovery: kernel context recovery table


^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (51 preceding siblings ...)
  2006-03-24 22:57 ` Luck, Tony
@ 2006-03-24 23:01 ` Luck, Tony
  2006-03-26 19:01 ` Chen, Kenneth W
                   ` (84 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-03-24 23:01 UTC (permalink / raw)
  To: linux-ia64

On Fri, Mar 24, 2006 at 02:57:15PM -0800, Luck, Tony wrote:
> please pull from:
> 
> 	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release
> 
> This will update the files shown below.

This was a first pass through my backlog ... but I have let things back there
get stale.  If your patch hasn't been applied yet, then a refresh & repost will
make your maintainer a happy guy.

-Tony

^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (52 preceding siblings ...)
  2006-03-24 23:01 ` Luck, Tony
@ 2006-03-26 19:01 ` Chen, Kenneth W
  2006-03-27  0:16 ` KAMEZAWA Hiroyuki
                   ` (83 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Chen, Kenneth W @ 2006-03-26 19:01 UTC (permalink / raw)
  To: linux-ia64

Luck, Tony wrote on Friday, March 24, 2006 3:02 PM
> On Fri, Mar 24, 2006 at 02:57:15PM -0800, Luck, Tony wrote:
> > please pull from:
> > 
> > 	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release
> > 
> > This will update the files shown below.
> 
> This was a first pass through my backlog ... but I have let things back there
> get stale.  If your patch hasn't been applied yet, then a refresh & repost will
> make your maintainer a happy guy.


Tony, please queue the following two patches in your next update.  They still
apply cleanly on Linus' git-tree as of this morning.  Thanks.


[PATCH] lazy_mmu_prot_update needs to be aware of huge pages
http://marc.theaimsgroup.com/?t\x114066421500001&r=1&w=2


[patch] optimize flush_tlb_range on large numa box
http://marc.theaimsgroup.com/?t\x114168341600005&r=1&w=2

- Ken


^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (53 preceding siblings ...)
  2006-03-26 19:01 ` Chen, Kenneth W
@ 2006-03-27  0:16 ` KAMEZAWA Hiroyuki
  2006-03-30 18:42 ` Luck, Tony
                   ` (82 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: KAMEZAWA Hiroyuki @ 2006-03-27  0:16 UTC (permalink / raw)
  To: linux-ia64

On Sun, 26 Mar 2006 11:01:21 -0800
"Chen, Kenneth W" <kenneth.w.chen@intel.com> wrote:

> Luck, Tony wrote on Friday, March 24, 2006 3:02 PM
> Tony, please queue the following two patches in your next update.  They still
> apply cleanly on Linus' git-tree as of this morning.  Thanks.
>
> [patch] optimize flush_tlb_range on large numa box
> http://marc.theaimsgroup.com/?t\x114168341600005&r=1&w=2
> 

I love this patch :) Our performance validation team found ia64_global_tlb_purge()
performance problem in do_wp_page()/ia64_global_tlb_purge(), copy-on-write.

When they does fork() at the rate of 4-500 fork/sec, 40% of cpu time was spent in 
copy-on-write's ia64_global_tlb_purge. By this, customer's shell-script cannot scale
enough. (we asked them to reduce fork()..)

(Because they have already removed their test enironment, I can't ask them to try
 this patch. sorry.)

Thanks,
--Kame

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (54 preceding siblings ...)
  2006-03-27  0:16 ` KAMEZAWA Hiroyuki
@ 2006-03-30 18:42 ` Luck, Tony
  2006-04-01  1:11 ` Luck, Tony
                   ` (81 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-03-30 18:42 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/kernel/gate.lds.S         |    1 
 arch/ia64/kernel/iosapic.c          |  279 +++++++++++++++++++++---------------
 arch/ia64/kernel/vmlinux.lds.S      |   18 +-
 arch/ia64/mm/init.c                 |    8 -
 arch/ia64/mm/ioremap.c              |    6 
 arch/ia64/mm/tlb.c                  |   12 -
 arch/ia64/sn/kernel/sn2/sn_hwperf.c |    8 -
 include/asm-ia64/asmmacro.h         |    4 
 8 files changed, 206 insertions(+), 130 deletions(-)

Bjorn Helgaas:
      [IA64] ioremap() should prefer WB over UC

Chen, Kenneth W:
      [IA64] optimize flush_tlb_range on large numa box

Dean Roe:
      [IA64-SGI] fix for-loop in sn_hwperf_geoid_to_cnode()

hawkes@sgi.com:
      [IA64-SGI] sn_hwperf use of num_online_cpus()

Jes Sorensen:
      [IA64] Add __mca_table to the DISCARD list in gate.lds

Russ Anderson:
      [IA64] Move __mca_table out of the __init section

Satoru Takeuchi:
      [IA64] correct some messages and fixes some minor things
      [IA64] simplify some condition checks in iosapic_check_gsi_range

Zhang, Yanmin:
      [IA64] lazy_mmu_prot_update needs to be aware of huge pages

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (55 preceding siblings ...)
  2006-03-30 18:42 ` Luck, Tony
@ 2006-04-01  1:11 ` Luck, Tony
  2006-04-10 18:58 ` Luck, Tony
                   ` (80 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-04-01  1:11 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/kernel/palinfo.c  |    8 
 arch/ia64/kernel/time.c     |    2 
 arch/ia64/kernel/topology.c |  367 ++++++++++++++++++++++++++++++++++++++++++++
 include/asm-ia64/pal.h      |   34 +++-
 4 files changed, 403 insertions(+), 8 deletions(-)

Tony Luck:
      [IA64] Avoid "u64 foo : 32;" for gcc3 vs. gcc4 compatibility

Zhang, Yanmin:
      [IA64] Export cpu cache info by sysfs

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (56 preceding siblings ...)
  2006-04-01  1:11 ` Luck, Tony
@ 2006-04-10 18:58 ` Luck, Tony
  2006-04-13 23:01 ` Luck, Tony
                   ` (79 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-04-10 18:58 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Bugfixes, cleanups, new syscalls, oh my!

Thanks!

-Tony

 arch/ia64/kernel/acpi-ext.c       |  143 ++++++++++++++++++--------------------
 arch/ia64/kernel/entry.S          |    7 +
 arch/ia64/kernel/mca.c            |   33 +++++---
 arch/ia64/kernel/mca_asm.S        |   10 +-
 arch/ia64/kernel/module.c         |    2 
 arch/ia64/mm/fault.c              |    3 
 arch/ia64/sn/kernel/xpc_channel.c |    2 
 include/asm-ia64/acpi-ext.h       |   11 +-
 include/asm-ia64/kdebug.h         |    2 
 include/asm-ia64/mca.h            |    5 +
 include/asm-ia64/mutex.h          |    2 
 include/asm-ia64/unistd.h         |    7 +
 include/asm-ia64/vga.h            |    2 
 13 files changed, 128 insertions(+), 101 deletions(-)

Bjorn Helgaas:
      [IA64] update HP CSR space discovery via ACPI
      [IA64] always map VGA framebuffer UC, even if it supports WB

Chen, Kenneth W:
      [IA64] fix bug in ia64 __mutex_fastpath_trylock

Christoph Lameter:
      [IA64] Prefetch mmap_sem in ia64_do_page_fault()

KAMEZAWA Hiroyuki:
      [IA64] for_each_possible_cpu: ia64

Keith Owens:
      [IA64] Pass more data to the MCA/INIT notify_die hooks
      [IA64] Failure to resume after INIT in user space

Tony Luck:
      [IA64] Wire up new syscall sync_file_range()
      [IA64] 'msg' may be used uninitialized in xpc_initiate_allocate()
      [IA64] Wire up new syscalls {set,get}_robust_list


Full "git whatchanged -" output:

diff-tree 0ffe984917b9cd6ecc19ffbc06f35869d8c18df8 (from 8cab7ccccbdd9fe3cf6b3400d5a88ecb683a5b1b)
Author: Christoph Lameter <clameter@sgi.com>
Date:   Tue Mar 28 22:54:38 2006 -0800

    [IA64] Prefetch mmap_sem in ia64_do_page_fault()
    
    Take a hint from an x86_64 optimization by Arjan van de Ven and use it
    for ia64.  See a9ba9a3b3897561d01e04cd21433746df46548c0
    
    Prefetch the mmap_sem, which is critical for the performance of the page fault
    handler.
    
    Note: mm may be NULL but I guess that is safe.
    See 458f935527372499b714bf4f8e646a68bb0f52e3
    
    Signed-off-by: Christoph Lameter <clameter@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c
index af7eb08..d98ec49 100644
--- a/arch/ia64/mm/fault.c
+++ b/arch/ia64/mm/fault.c
@@ -60,6 +60,9 @@ ia64_do_page_fault (unsigned long addres
 	struct siginfo si;
 	unsigned long mask;
 
+	/* mmap_sem is performance critical.... */
+	prefetchw(&mm->mmap_sem);
+
 	/*
 	 * If we're in an interrupt or have no user context, we must not take the fault..
 	 */

diff-tree 8cab7ccccbdd9fe3cf6b3400d5a88ecb683a5b1b (from 958b166c00b39ff0b28ad2bbb32624b9f305a4e1)
Author: Keith Owens <kaos@sgi.com>
Date:   Fri Apr 7 16:34:34 2006 +1000

    [IA64] Failure to resume after INIT in user space
    
    The OS INIT handler is loading incorrect values into cr.ifa on exit.
    This shows up as a hang when resuming after an INIT that is delivered
    while a cpu is in user space.  Correct the value loaded into cr.ifa.
    
    Signed-off-by: Keith Owens <kaos@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/mca_asm.S b/arch/ia64/kernel/mca_asm.S
index 60a464b..6dff024 100644
--- a/arch/ia64/kernel/mca_asm.S
+++ b/arch/ia64/kernel/mca_asm.S
@@ -827,7 +827,7 @@ ia64_state_restore:
 	ld8 r9=[temp2],16	// sal_gp
 	;;
 	ld8 r22=[temp1],16	// pal_min_state, virtual
-	ld8 r21=[temp2],16	// prev_IA64_KR_CURRENT
+	ld8 r13=[temp2],16	// prev_IA64_KR_CURRENT
 	;;
 	ld8 r16=[temp1],16	// prev_IA64_KR_CURRENT_STACK
 	ld8 r20=[temp2],16	// prev_task
@@ -848,7 +848,7 @@ ia64_state_restore:
 	mov cr.iim=temp3
 	mov cr.iha=temp4
 	dep r22=0,r22,62,1	// pal_min_state, physical, uncached
-	mov IA64_KR(CURRENT)=r21
+	mov IA64_KR(CURRENT)=r13
 	ld8 r8=[temp1]		// os_status
 	ld8 r10=[temp2]		// context
 
@@ -856,7 +856,7 @@ ia64_state_restore:
 	 * avoid any dependencies on the algorithm in ia64_switch_to(), just
 	 * purge any existing CURRENT_STACK mapping and insert the new one.
 	 *
-	 * r16 contains prev_IA64_KR_CURRENT_STACK, r21 contains
+	 * r16 contains prev_IA64_KR_CURRENT_STACK, r13 contains
 	 * prev_IA64_KR_CURRENT, these values may have been changed by the C
 	 * code.  Do not use r8, r9, r10, r22, they contain values ready for
 	 * the return to SAL.
@@ -873,7 +873,7 @@ ia64_state_restore:
 	;;
 	srlz.d
 
-	extr.u r19=r21,61,3			// r21 = prev_IA64_KR_CURRENT
+	extr.u r19=r13,61,3			// r13 = prev_IA64_KR_CURRENT
 	shl r20=r16,IA64_GRANULE_SHIFT		// r16 = prev_IA64_KR_CURRENT_STACK
 	movl r21=PAGE_KERNEL			// page properties
 	;;
@@ -883,7 +883,7 @@ ia64_state_restore:
 (p6)	br.spnt 1f				// the dreaded cpu 0 idle task in region 5:(
 	;;
 	mov cr.itir=r18
-	mov cr.ifa=r21
+	mov cr.ifa=r13
 	mov r20=IA64_TR_CURRENT_STACK
 	;;
 	itr.d dtr[r20]=r21

diff-tree 958b166c00b39ff0b28ad2bbb32624b9f305a4e1 (from 2db8d99ffdbed7d2beb1bbdefdcd086dda9dee98)
Author: Keith Owens <kaos@sgi.com>
Date:   Mon Apr 3 15:26:12 2006 +1000

    [IA64] Pass more data to the MCA/INIT notify_die hooks
    
    The MCA/INIT handlers maintain important state in the SAL to OS (sos)
    area and in the monarch_cpu flag.  Kernel debuggers (such as KDB) need
    this data, and may need to adjust the monarch_cpu field so make the
    data available to the notify_die hooks.  Define two more events for
    calling the functions on the notify_die chain.
    
    Signed-off-by: Keith Owens <kaos@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c
index 8963171..5e6fdbe 100644
--- a/arch/ia64/kernel/mca.c
+++ b/arch/ia64/kernel/mca.c
@@ -581,10 +581,12 @@ ia64_mca_rendez_int_handler(int rendez_i
 {
 	unsigned long flags;
 	int cpu = smp_processor_id();
+	struct ia64_mca_notify_die nd +		{ .sos = NULL, .monarch_cpu = &monarch_cpu };
 
 	/* Mask all interrupts */
 	local_irq_save(flags);
-	if (notify_die(DIE_MCA_RENDZVOUS_ENTER, "MCA", regs, 0, 0, 0)
+	if (notify_die(DIE_MCA_RENDZVOUS_ENTER, "MCA", regs, (long)&nd, 0, 0)
 			= NOTIFY_STOP)
 		ia64_mca_spin(__FUNCTION__);
 
@@ -594,7 +596,7 @@ ia64_mca_rendez_int_handler(int rendez_i
 	 */
 	ia64_sal_mc_rendez();
 
-	if (notify_die(DIE_MCA_RENDZVOUS_PROCESS, "MCA", regs, 0, 0, 0)
+	if (notify_die(DIE_MCA_RENDZVOUS_PROCESS, "MCA", regs, (long)&nd, 0, 0)
 			= NOTIFY_STOP)
 		ia64_mca_spin(__FUNCTION__);
 
@@ -602,7 +604,7 @@ ia64_mca_rendez_int_handler(int rendez_i
 	while (monarch_cpu != -1)
 	       cpu_relax();	/* spin until monarch leaves */
 
-	if (notify_die(DIE_MCA_RENDZVOUS_LEAVE, "MCA", regs, 0, 0, 0)
+	if (notify_die(DIE_MCA_RENDZVOUS_LEAVE, "MCA", regs, (long)&nd, 0, 0)
 			= NOTIFY_STOP)
 		ia64_mca_spin(__FUNCTION__);
 
@@ -1023,6 +1025,8 @@ ia64_mca_handler(struct pt_regs *regs, s
 		&sos->proc_state_param;
 	int recover, cpu = smp_processor_id();
 	task_t *previous_current;
+	struct ia64_mca_notify_die nd +		{ .sos = sos, .monarch_cpu = &monarch_cpu };
 
 	oops_in_progress = 1;	/* FIXME: make printk NMI/MCA/INIT safe */
 	console_loglevel = 15;	/* make sure printks make it to console */
@@ -1031,7 +1035,7 @@ ia64_mca_handler(struct pt_regs *regs, s
 
 	previous_current = ia64_mca_modify_original_stack(regs, sw, sos, "MCA");
 	monarch_cpu = cpu;
-	if (notify_die(DIE_MCA_MONARCH_ENTER, "MCA", regs, 0, 0, 0)
+	if (notify_die(DIE_MCA_MONARCH_ENTER, "MCA", regs, (long)&nd, 0, 0)
 			= NOTIFY_STOP)
 		ia64_mca_spin(__FUNCTION__);
 	ia64_wait_for_slaves(cpu);
@@ -1043,7 +1047,7 @@ ia64_mca_handler(struct pt_regs *regs, s
 	 * spinning in SAL does not work.
 	 */
 	ia64_mca_wakeup_all();
-	if (notify_die(DIE_MCA_MONARCH_PROCESS, "MCA", regs, 0, 0, 0)
+	if (notify_die(DIE_MCA_MONARCH_PROCESS, "MCA", regs, (long)&nd, 0, 0)
 			= NOTIFY_STOP)
 		ia64_mca_spin(__FUNCTION__);
 
@@ -1064,7 +1068,7 @@ ia64_mca_handler(struct pt_regs *regs, s
 		ia64_sal_clear_state_info(SAL_INFO_TYPE_MCA);
 		sos->os_status = IA64_MCA_CORRECTED;
 	}
-	if (notify_die(DIE_MCA_MONARCH_LEAVE, "MCA", regs, 0, 0, recover)
+	if (notify_die(DIE_MCA_MONARCH_LEAVE, "MCA", regs, (long)&nd, 0, recover)
 			= NOTIFY_STOP)
 		ia64_mca_spin(__FUNCTION__);
 
@@ -1351,10 +1355,14 @@ ia64_init_handler(struct pt_regs *regs, 
 	static atomic_t monarchs;
 	task_t *previous_current;
 	int cpu = smp_processor_id();
+	struct ia64_mca_notify_die nd +		{ .sos = sos, .monarch_cpu = &monarch_cpu };
 
 	oops_in_progress = 1;	/* FIXME: make printk NMI/MCA/INIT safe */
 	console_loglevel = 15;	/* make sure printks make it to console */
 
+	(void) notify_die(DIE_INIT_ENTER, "INIT", regs, (long)&nd, 0, 0);
+
 	printk(KERN_INFO "Entered OS INIT handler. PSP=%lx cpu=%d monarch=%ld\n",
 		sos->proc_state_param, cpu, sos->monarch);
 	salinfo_log_wakeup(SAL_INFO_TYPE_INIT, NULL, 0, 0);
@@ -1390,15 +1398,15 @@ ia64_init_handler(struct pt_regs *regs, 
 		ia64_mc_info.imi_rendez_checkin[cpu] = IA64_MCA_RENDEZ_CHECKIN_INIT;
 		while (monarch_cpu = -1)
 		       cpu_relax();	/* spin until monarch enters */
-		if (notify_die(DIE_INIT_SLAVE_ENTER, "INIT", regs, 0, 0, 0)
+		if (notify_die(DIE_INIT_SLAVE_ENTER, "INIT", regs, (long)&nd, 0, 0)
 				= NOTIFY_STOP)
 			ia64_mca_spin(__FUNCTION__);
-		if (notify_die(DIE_INIT_SLAVE_PROCESS, "INIT", regs, 0, 0, 0)
+		if (notify_die(DIE_INIT_SLAVE_PROCESS, "INIT", regs, (long)&nd, 0, 0)
 				= NOTIFY_STOP)
 			ia64_mca_spin(__FUNCTION__);
 		while (monarch_cpu != -1)
 		       cpu_relax();	/* spin until monarch leaves */
-		if (notify_die(DIE_INIT_SLAVE_LEAVE, "INIT", regs, 0, 0, 0)
+		if (notify_die(DIE_INIT_SLAVE_LEAVE, "INIT", regs, (long)&nd, 0, 0)
 				= NOTIFY_STOP)
 			ia64_mca_spin(__FUNCTION__);
 		printk("Slave on cpu %d returning to normal service.\n", cpu);
@@ -1409,7 +1417,7 @@ ia64_init_handler(struct pt_regs *regs, 
 	}
 
 	monarch_cpu = cpu;
-	if (notify_die(DIE_INIT_MONARCH_ENTER, "INIT", regs, 0, 0, 0)
+	if (notify_die(DIE_INIT_MONARCH_ENTER, "INIT", regs, (long)&nd, 0, 0)
 			= NOTIFY_STOP)
 		ia64_mca_spin(__FUNCTION__);
 
@@ -1426,10 +1434,10 @@ ia64_init_handler(struct pt_regs *regs, 
 	 * to default_monarch_init_process() above and just print all the
 	 * tasks.
 	 */
-	if (notify_die(DIE_INIT_MONARCH_PROCESS, "INIT", regs, 0, 0, 0)
+	if (notify_die(DIE_INIT_MONARCH_PROCESS, "INIT", regs, (long)&nd, 0, 0)
 			= NOTIFY_STOP)
 		ia64_mca_spin(__FUNCTION__);
-	if (notify_die(DIE_INIT_MONARCH_LEAVE, "INIT", regs, 0, 0, 0)
+	if (notify_die(DIE_INIT_MONARCH_LEAVE, "INIT", regs, (long)&nd, 0, 0)
 			= NOTIFY_STOP)
 		ia64_mca_spin(__FUNCTION__);
 	printk("\nINIT dump complete.  Monarch on cpu %d returning to normal service.\n", cpu);
@@ -1631,6 +1639,7 @@ ia64_mca_init(void)
 			printk(KERN_INFO "Increasing MCA rendezvous timeout from "
 				"%ld to %ld milliseconds\n", timeout, isrv.v0);
 			timeout = isrv.v0;
+			(void) notify_die(DIE_MCA_NEW_TIMEOUT, "MCA", NULL, timeout, 0, 0);
 			continue;
 		}
 		printk(KERN_ERR "Failed to register rendezvous interrupt "
diff --git a/include/asm-ia64/kdebug.h b/include/asm-ia64/kdebug.h
index 218c458..c195a9a 100644
--- a/include/asm-ia64/kdebug.h
+++ b/include/asm-ia64/kdebug.h
@@ -58,6 +58,8 @@ enum die_val {
 	DIE_MCA_RENDZVOUS_ENTER,
 	DIE_MCA_RENDZVOUS_PROCESS,
 	DIE_MCA_RENDZVOUS_LEAVE,
+	DIE_MCA_NEW_TIMEOUT,
+	DIE_INIT_ENTER,
 	DIE_INIT_MONARCH_ENTER,
 	DIE_INIT_MONARCH_PROCESS,
 	DIE_INIT_MONARCH_LEAVE,
diff --git a/include/asm-ia64/mca.h b/include/asm-ia64/mca.h
index bfbbb8d..9c5389b 100644
--- a/include/asm-ia64/mca.h
+++ b/include/asm-ia64/mca.h
@@ -148,6 +148,11 @@ extern int  ia64_reg_MCA_extension(int (
 extern void ia64_unreg_MCA_extension(void);
 extern u64 ia64_get_rnat(u64 *);
 
+struct ia64_mca_notify_die {
+	struct ia64_sal_os_state *sos;
+	int *monarch_cpu;
+};
+
 #else	/* __ASSEMBLY__ */
 
 #define IA64_MCA_CORRECTED	0x0	/* Error has been corrected by OS_MCA */

diff-tree 2db8d99ffdbed7d2beb1bbdefdcd086dda9dee98 (from cfab9d0e1da8e08a39759d0fc3bf5e40f0ac2d55)
Author: Bjorn Helgaas <bjorn.helgaas@hp.com>
Date:   Fri Apr 7 22:47:12 2006 -0700

    [IA64] always map VGA framebuffer UC, even if it supports WB
    
    EFI on some machines, e.g., Intel Tiger, reports that the VGA framebuffer
    supports WB access.  ioremap() prefers WB when possible, so it can work
    when mapping main memory.
    
    But it doesn't make sense to map a framebuffer WB, because the driver
    doesn't flush explicitly, so updates won't make it to the device
    immediately.
    
    This is due to Zou Nan hai <nanhai.zou@intel.com>.
    
    More extensive fix that adds a "size" argument coming soon.
    
    Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
    Cc: "Antonino A. Daplas" <adaplas@pol.net>
    Cc: "Luck, Tony" <tony.luck@intel.com>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/include/asm-ia64/vga.h b/include/asm-ia64/vga.h
index bc3349f..091177c 100644
--- a/include/asm-ia64/vga.h
+++ b/include/asm-ia64/vga.h
@@ -17,7 +17,7 @@ #define __ASM_IA64_VGA_H_
 extern unsigned long vga_console_iobase;
 extern unsigned long vga_console_membase;
 
-#define VGA_MAP_MEM(x)	((unsigned long) ioremap(vga_console_membase + (x), 0))
+#define VGA_MAP_MEM(x)	((unsigned long) ioremap_nocache(vga_console_membase + (x), 0))
 
 #define vga_readb(x)	(*(x))
 #define vga_writeb(x,y)	(*(y) = (x))

diff-tree cfab9d0e1da8e08a39759d0fc3bf5e40f0ac2d55 (from 0681226661754a99de711cda2c2bd12ff9cd2c3b)
Author: Chen, Kenneth W <kenneth.w.chen@intel.com>
Date:   Fri Apr 7 17:12:54 2006 -0700

    [IA64] fix bug in ia64 __mutex_fastpath_trylock
    
    The parenthesis around "likely" used in ia64 __mutex_fastpath_trylock
    is incorrect, and it leads to broken mutex_trylock.  Here is the
    patch that fixed the bug.  I removed the likely altogether because
    there is no branch and gcc does a reasonable job at predicating the
    return value.
    
    Signed-off-by: Ken Chen <kenneth.w.chen@intel.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/include/asm-ia64/mutex.h b/include/asm-ia64/mutex.h
index 5a3224f..bed73a6 100644
--- a/include/asm-ia64/mutex.h
+++ b/include/asm-ia64/mutex.h
@@ -84,7 +84,7 @@ #define __mutex_slowpath_needs_to_unlock
 static inline int
 __mutex_fastpath_trylock(atomic_t *count, int (*fail_fn)(atomic_t *))
 {
-	if (likely(cmpxchg_acq(count, 1, 0)) = 1)
+	if (cmpxchg_acq(count, 1, 0) = 1)
 		return 1;
 	return 0;
 }

diff-tree 0681226661754a99de711cda2c2bd12ff9cd2c3b (from 03fbaca36a85a8c923e30abfb1a9a630bf1c5a1d)
Author: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Date:   Tue Mar 28 14:50:09 2006 -0800

    [IA64] for_each_possible_cpu: ia64
    
    for_each_cpu() actually iterates across all possible CPUs.  We've had mistakes
    in the past where people were using for_each_cpu() where they should have been
    iterating across only online or present CPUs.  This is inefficient and
    possibly buggy.
    
    We're renaming for_each_cpu() to for_each_possible_cpu() to avoid this in the
    future.
    
    This patch replaces for_each_cpu with for_each_possible_cpu under
    arch/ia64/kernel/.
    
    Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fjitsu.com>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/module.c b/arch/ia64/kernel/module.c
index 7a2f0a7..3a30cfc 100644
--- a/arch/ia64/kernel/module.c
+++ b/arch/ia64/kernel/module.c
@@ -947,7 +947,7 @@ void
 percpu_modcopy (void *pcpudst, const void *src, unsigned long size)
 {
 	unsigned int i;
-	for_each_cpu(i) {
+	for_each_possible_cpu(i) {
 		memcpy(pcpudst + __per_cpu_offset[i], src, size);
 	}
 }

diff-tree 03fbaca36a85a8c923e30abfb1a9a630bf1c5a1d (from b8cd2af862c3cbd428600e1c4f0d3f97c0da54cc)
Author: Bjorn Helgaas <bjorn.helgaas@hp.com>
Date:   Tue Mar 28 14:06:20 2006 -0800

    [IA64] update HP CSR space discovery via ACPI
    
    Get rid of the manual search of _CRS, in favor of
    acpi_get_vendor_resource() which is now provided by the ACPI CA.  And fall
    back to searching for a consumer-only address space descriptor if no
    vendor-defined resource is found.
    
    Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/acpi-ext.c b/arch/ia64/kernel/acpi-ext.c
index 4a5574f..fff8292 100644
--- a/arch/ia64/kernel/acpi-ext.c
+++ b/arch/ia64/kernel/acpi-ext.c
@@ -1,105 +1,104 @@
 /*
- * arch/ia64/kernel/acpi-ext.c
+ * (c) Copyright 2003, 2006 Hewlett-Packard Development Company, L.P.
+ *	Alex Williamson <alex.williamson@hp.com>
+ *	Bjorn Helgaas <bjorn.helgaas@hp.com>
  *
- * Copyright (C) 2003 Hewlett-Packard
- * Copyright (C) Alex Williamson
- * Copyright (C) Bjorn Helgaas
- *
- * Vendor specific extensions to ACPI.
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
  */
 
 #include <linux/config.h>
 #include <linux/module.h>
 #include <linux/types.h>
 #include <linux/acpi.h>
-#include <linux/efi.h>
 
 #include <asm/acpi-ext.h>
 
-struct acpi_vendor_descriptor {
-	u8 guid_id;
-	efi_guid_t guid;
-};
+/*
+ * Device CSRs that do not appear in PCI config space should be described
+ * via ACPI.  This would normally be done with Address Space Descriptors
+ * marked as "consumer-only," but old versions of Windows and Linux ignore
+ * the producer/consumer flag, so HP invented a vendor-defined resource to
+ * describe the location and size of CSR space.
+ */
 
-struct acpi_vendor_info {
-	struct acpi_vendor_descriptor *descriptor;
-	u8 *data;
-	u32 length;
+struct acpi_vendor_uuid hp_ccsr_uuid = {
+	.subtype = 2,
+	.data = { 0xf9, 0xad, 0xe9, 0x69, 0x4f, 0x92, 0x5f, 0xab, 0xf6, 0x4a,
+	    0x24, 0xd2, 0x01, 0x37, 0x0e, 0xad },
 };
 
-acpi_status
-acpi_vendor_resource_match(struct acpi_resource *resource, void *context)
+static acpi_status hp_ccsr_locate(acpi_handle obj, u64 *base, u64 *length)
 {
-	struct acpi_vendor_info *info = (struct acpi_vendor_info *)context;
-	struct acpi_resource_vendor *vendor;
-	struct acpi_vendor_descriptor *descriptor;
-	u32 byte_length;
-
-	if (resource->type != ACPI_RESOURCE_TYPE_VENDOR)
-		return AE_OK;
-
-	vendor = (struct acpi_resource_vendor *)&resource->data;
-	descriptor = (struct acpi_vendor_descriptor *)vendor->byte_data;
-	if (vendor->byte_length <= sizeof(*info->descriptor) ||
-	    descriptor->guid_id != info->descriptor->guid_id ||
-	    efi_guidcmp(descriptor->guid, info->descriptor->guid))
-		return AE_OK;
-
-	byte_length = vendor->byte_length - sizeof(struct acpi_vendor_descriptor);
-	info->data = acpi_os_allocate(byte_length);
-	if (!info->data)
-		return AE_NO_MEMORY;
-
-	memcpy(info->data,
-	       vendor->byte_data + sizeof(struct acpi_vendor_descriptor),
-	       byte_length);
-	info->length = byte_length;
-	return AE_CTRL_TERMINATE;
-}
+	acpi_status status;
+	struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
+	struct acpi_resource *resource;
+	struct acpi_resource_vendor_typed *vendor;
 
-acpi_status
-acpi_find_vendor_resource(acpi_handle obj, struct acpi_vendor_descriptor * id,
-			  u8 ** data, u32 * byte_length)
-{
-	struct acpi_vendor_info info;
+	status = acpi_get_vendor_resource(obj, METHOD_NAME__CRS, &hp_ccsr_uuid,
+		&buffer);
 
-	info.descriptor = id;
-	info.data = NULL;
+	resource = buffer.pointer;
+	vendor = &resource->data.vendor_typed;
 
-	acpi_walk_resources(obj, METHOD_NAME__CRS, acpi_vendor_resource_match,
-			    &info);
-	if (!info.data)
-		return AE_NOT_FOUND;
+	if (ACPI_FAILURE(status) || vendor->byte_length < 16) {
+		status = AE_NOT_FOUND;
+		goto exit;
+	}
 
-	*data = info.data;
-	*byte_length = info.length;
-	return AE_OK;
+	memcpy(base, vendor->byte_data, sizeof(*base));
+	memcpy(length, vendor->byte_data + 8, sizeof(*length));
+
+  exit:
+	acpi_os_free(buffer.pointer);
+	return status;
 }
 
-struct acpi_vendor_descriptor hp_ccsr_descriptor = {
-	.guid_id = 2,
-	.guid -	    EFI_GUID(0x69e9adf9, 0x924f, 0xab5f, 0xf6, 0x4a, 0x24, 0xd2, 0x01,
-		     0x37, 0x0e, 0xad)
+struct csr_space {
+	u64	base;
+	u64	length;
 };
 
-acpi_status hp_acpi_csr_space(acpi_handle obj, u64 * csr_base, u64 * csr_length)
+static acpi_status find_csr_space(struct acpi_resource *resource, void *data)
 {
+	struct csr_space *space = data;
+	struct acpi_resource_address64 addr;
 	acpi_status status;
-	u8 *data;
-	u32 length;
 
-	status -	    acpi_find_vendor_resource(obj, &hp_ccsr_descriptor, &data, &length);
+	status = acpi_resource_to_address64(resource, &addr);
+	if (ACPI_SUCCESS(status) &&
+	    addr.resource_type = ACPI_MEMORY_RANGE &&
+	    addr.address_length &&
+	    addr.producer_consumer = ACPI_CONSUMER) {
+		space->base = addr.minimum;
+		space->length = addr.address_length;
+		return AE_CTRL_TERMINATE;
+	}
+	return AE_OK;		/* keep looking */
+}
 
-	if (ACPI_FAILURE(status) || length != 16)
-		return AE_NOT_FOUND;
+static acpi_status hp_crs_locate(acpi_handle obj, u64 *base, u64 *length)
+{
+	struct csr_space space = { 0, 0 };
 
-	memcpy(csr_base, data, sizeof(*csr_base));
-	memcpy(csr_length, data + 8, sizeof(*csr_length));
-	acpi_os_free(data);
+	acpi_walk_resources(obj, METHOD_NAME__CRS, find_csr_space, &space);
+	if (!space.length)
+		return AE_NOT_FOUND;
 
+	*base = space.base;
+	*length = space.length;
 	return AE_OK;
 }
 
+acpi_status hp_acpi_csr_space(acpi_handle obj, u64 *csr_base, u64 *csr_length)
+{
+	acpi_status status;
+
+	status = hp_ccsr_locate(obj, csr_base, csr_length);
+	if (ACPI_SUCCESS(status))
+		return status;
+
+	return hp_crs_locate(obj, csr_base, csr_length);
+}
 EXPORT_SYMBOL(hp_acpi_csr_space);
diff --git a/include/asm-ia64/acpi-ext.h b/include/asm-ia64/acpi-ext.h
index 56d2ddc..734d137 100644
--- a/include/asm-ia64/acpi-ext.h
+++ b/include/asm-ia64/acpi-ext.h
@@ -1,12 +1,15 @@
 /*
- * ia64/platform/hp/common/hp_acpi.h
+ * (c) Copyright 2003, 2006 Hewlett-Packard Development Company, L.P.
+ *	Alex Williamson <alex.williamson@hp.com>
+ *	Bjorn Helgaas <bjorn.helgaas@hp.com>
  *
- * Copyright (C) 2003 Hewlett-Packard
- * Copyright (C) Alex Williamson
- * Copyright (C) Bjorn Helgaas
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
  *
  * Vendor specific extensions to ACPI.
  */
+
 #ifndef _ASM_IA64_ACPI_EXT_H
 #define _ASM_IA64_ACPI_EXT_H
 

diff-tree b8cd2af862c3cbd428600e1c4f0d3f97c0da54cc (from 27f4aa3db090ff5bc0e6c192aae6d99b21563b21)
Author: Tony Luck <tony.luck@intel.com>
Date:   Thu Apr 6 14:20:16 2006 -0700

    [IA64] Wire up new syscalls {set,get}_robust_list
    
    Join the dots to enable Ingo's robut futex syscalls.
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S
index 26ac96a..6e16f6b 100644
--- a/arch/ia64/kernel/entry.S
+++ b/arch/ia64/kernel/entry.S
@@ -1606,8 +1606,8 @@ sys_call_table:
 	data8 sys_ni_syscall			// 1295 reserved for ppoll
 	data8 sys_unshare
 	data8 sys_splice
-	data8 sys_ni_syscall			// reserved for set_robust_futex
-	data8 sys_ni_syscall			// reserved for get_robust_futex
+	data8 sys_set_robust_list
+	data8 sys_get_robust_list
 	data8 sys_sync_file_range		// 1300
 
 	.org sys_call_table + 8*NR_syscalls	// guard against failures to increase NR_syscalls
diff --git a/include/asm-ia64/unistd.h b/include/asm-ia64/unistd.h
index c15fc92..1c749ac 100644
--- a/include/asm-ia64/unistd.h
+++ b/include/asm-ia64/unistd.h
@@ -286,7 +286,8 @@ #define __NR_faccessat			1293
 /* 1294, 1295 reserved for pselect/ppoll */
 #define __NR_unshare			1296
 #define __NR_splice			1297
-/* 1298, 1299 reserved for {set,get}_robust_list */
+#define __NR_set_robust_list		1298
+#define __NR_get_robust_list		1299
 #define __NR_sync_file_range		1300
 
 #ifdef __KERNEL__

diff-tree 27f4aa3db090ff5bc0e6c192aae6d99b21563b21 (from d905b00b3bc9484d92dd6e9bd9fd8cf66580dc8a)
Author: Tony Luck <tony.luck@intel.com>
Date:   Tue Apr 4 14:11:49 2006 -0700

    [IA64] 'msg' may be used uninitialized in xpc_initiate_allocate()
    
    Found by gcc4.1 and reported by Dean Nelson.
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/sn/kernel/xpc_channel.c b/arch/ia64/sn/kernel/xpc_channel.c
index d0abddd..8255a9b 100644
--- a/arch/ia64/sn/kernel/xpc_channel.c
+++ b/arch/ia64/sn/kernel/xpc_channel.c
@@ -1831,7 +1831,7 @@ xpc_initiate_allocate(partid_t partid, i
 {
 	struct xpc_partition *part = &xpc_partitions[partid];
 	enum xpc_retval ret = xpcUnknownReason;
-	struct xpc_msg *msg;
+	struct xpc_msg *msg = NULL;
 
 
 	DBUG_ON(partid <= 0 || partid >= XP_MAX_PARTITIONS);

diff-tree d905b00b3bc9484d92dd6e9bd9fd8cf66580dc8a (from 6246b6128bbe34d0752f119cf7c5111c85fe481d)
Author: Tony Luck <tony.luck@intel.com>
Date:   Tue Apr 4 14:08:11 2006 -0700

    [IA64] Wire up new syscall sync_file_range()
    
    Also reserve syscall numbers for {set,get}_robust_list
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S
index 750e8e7..26ac96a 100644
--- a/arch/ia64/kernel/entry.S
+++ b/arch/ia64/kernel/entry.S
@@ -1606,5 +1606,8 @@ sys_call_table:
 	data8 sys_ni_syscall			// 1295 reserved for ppoll
 	data8 sys_unshare
 	data8 sys_splice
+	data8 sys_ni_syscall			// reserved for set_robust_futex
+	data8 sys_ni_syscall			// reserved for get_robust_futex
+	data8 sys_sync_file_range		// 1300
 
 	.org sys_call_table + 8*NR_syscalls	// guard against failures to increase NR_syscalls
diff --git a/include/asm-ia64/unistd.h b/include/asm-ia64/unistd.h
index 36070c1..c15fc92 100644
--- a/include/asm-ia64/unistd.h
+++ b/include/asm-ia64/unistd.h
@@ -286,12 +286,14 @@ #define __NR_faccessat			1293
 /* 1294, 1295 reserved for pselect/ppoll */
 #define __NR_unshare			1296
 #define __NR_splice			1297
+/* 1298, 1299 reserved for {set,get}_robust_list */
+#define __NR_sync_file_range		1300
 
 #ifdef __KERNEL__
 
 #include <linux/config.h>
 
-#define NR_syscalls			274 /* length of syscall table */
+#define NR_syscalls			277 /* length of syscall table */
 
 #define __ARCH_WANT_SYS_RT_SIGACTION
 

^ permalink raw reply related	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (57 preceding siblings ...)
  2006-04-10 18:58 ` Luck, Tony
@ 2006-04-13 23:01 ` Luck, Tony
  2006-04-27 23:38 ` Luck, Tony
                   ` (78 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-04-13 23:01 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/kernel/mca.c   |   10 +++----
 arch/ia64/mm/discontig.c |   66 ++++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 70 insertions(+), 6 deletions(-)

Keith Owens:
      [IA64] ia64_wait_for_slaves() incorrectly reports MCA

Robin Holt:
      [IA64] Make show_mem() skip holes in a pgdat

diff-tree ace1d816a13ff42d4f41989862552032f9c19853 (from 356a5c1c6fdfb8eed6dbb3979d90c7cc7060017a)
Author: Robin Holt <holt@sgi.com>
Date:   Thu Apr 13 15:34:45 2006 -0700

    [IA64] Make show_mem() skip holes in a pgdat
    
    This patch modifies ia64's show_mem() to walk the vmem_map page tables and
    rapidly skip forward across regions where the page tables are missing.
    This prevents the pfn_valid() check from causing numerous unnecessary
    page faults.
    
    Without this patch on a 512 node 512 cpu system where every node has four
    memory holes, the show_mem() call takes 1 hour 18 minutes.  With this
    patch, it takes less than 3 seconds.
    
    Signed-off-by: Robin Holt <holt@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c
index ec9eeb8..b6bcc9f 100644
--- a/arch/ia64/mm/discontig.c
+++ b/arch/ia64/mm/discontig.c
@@ -519,6 +519,68 @@ void __cpuinit *per_cpu_init(void)
 }
 #endif /* CONFIG_SMP */
 
+#ifdef CONFIG_VIRTUAL_MEM_MAP
+static inline int find_next_valid_pfn_for_pgdat(pg_data_t *pgdat, int i)
+{
+	unsigned long end_address, hole_next_pfn;
+	unsigned long stop_address;
+
+	end_address = (unsigned long) &vmem_map[pgdat->node_start_pfn + i];
+	end_address = PAGE_ALIGN(end_address);
+
+	stop_address = (unsigned long) &vmem_map[
+		pgdat->node_start_pfn + pgdat->node_spanned_pages];
+
+	do {
+		pgd_t *pgd;
+		pud_t *pud;
+		pmd_t *pmd;
+		pte_t *pte;
+
+		pgd = pgd_offset_k(end_address);
+		if (pgd_none(*pgd)) {
+			end_address += PGDIR_SIZE;
+			continue;
+		}
+
+		pud = pud_offset(pgd, end_address);
+		if (pud_none(*pud)) {
+			end_address += PUD_SIZE;
+			continue;
+		}
+
+		pmd = pmd_offset(pud, end_address);
+		if (pmd_none(*pmd)) {
+			end_address += PMD_SIZE;
+			continue;
+		}
+
+		pte = pte_offset_kernel(pmd, end_address);
+retry_pte:
+		if (pte_none(*pte)) {
+			end_address += PAGE_SIZE;
+			pte++;
+			if ((end_address < stop_address) &&
+			    (end_address != ALIGN(end_address, 1UL << PMD_SHIFT)))
+				goto retry_pte;
+			continue;
+		}
+		/* Found next valid vmem_map page */
+		break;
+	} while (end_address < stop_address);
+
+	end_address = min(end_address, stop_address);
+	end_address = end_address - (unsigned long) vmem_map + sizeof(struct page) - 1;
+	hole_next_pfn = end_address / sizeof(struct page);
+	return hole_next_pfn - pgdat->node_start_pfn;
+}
+#else
+static inline int find_next_valid_pfn_for_pgdat(pg_data_t *pgdat, int i)
+{
+	return i + 1;
+}
+#endif
+
 /**
  * show_mem - give short summary of memory stats
  *
@@ -547,8 +609,10 @@ void show_mem(void)
 			struct page *page;
 			if (pfn_valid(pgdat->node_start_pfn + i))
 				page = pfn_to_page(pgdat->node_start_pfn + i);
-			else
+			else {
+				i = find_next_valid_pfn_for_pgdat(pgdat, i) - 1;
 				continue;
+			}
 			if (PageReserved(page))
 				reserved++;
 			else if (PageSwapCache(page))

diff-tree 356a5c1c6fdfb8eed6dbb3979d90c7cc7060017a (from 907d91d708d9999bec0185d630062576ac4181a7)
Author: Keith Owens <kaos@sgi.com>
Date:   Tue Apr 11 14:59:41 2006 +1000

    [IA64] ia64_wait_for_slaves() incorrectly reports MCA
    
    ia64_wait_for_slaves() was changed in 2.6.17-rc1 to report the slave
    state.  It incorrectly assumes that all slaves are for MCA, but
    ia64_wait_for_slaves() is also called from the INIT monarch handler.
    The existing message is very misleading, so correct it.
    
    Signed-off-by: Keith Owens <kaos@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c
index 5e6fdbe..6a08806 100644
--- a/arch/ia64/kernel/mca.c
+++ b/arch/ia64/kernel/mca.c
@@ -963,7 +963,7 @@ no_mod:
  */
 
 static void
-ia64_wait_for_slaves(int monarch)
+ia64_wait_for_slaves(int monarch, const char *type)
 {
 	int c, wait = 0, missing = 0;
 	for_each_online_cpu(c) {
@@ -989,7 +989,7 @@ ia64_wait_for_slaves(int monarch)
 	}
 	if (!missing)
 		goto all_in;
-	printk(KERN_INFO "OS MCA slave did not rendezvous on cpu");
+	printk(KERN_INFO "OS %s slave did not rendezvous on cpu", type);
 	for_each_online_cpu(c) {
 		if (c = monarch)
 			continue;
@@ -1000,7 +1000,7 @@ ia64_wait_for_slaves(int monarch)
 	return;
 
 all_in:
-	printk(KERN_INFO "All OS MCA slaves have reached rendezvous\n");
+	printk(KERN_INFO "All OS %s slaves have reached rendezvous\n", type);
 	return;
 }
 
@@ -1038,7 +1038,7 @@ ia64_mca_handler(struct pt_regs *regs, s
 	if (notify_die(DIE_MCA_MONARCH_ENTER, "MCA", regs, (long)&nd, 0, 0)
 			= NOTIFY_STOP)
 		ia64_mca_spin(__FUNCTION__);
-	ia64_wait_for_slaves(cpu);
+	ia64_wait_for_slaves(cpu, "MCA");
 
 	/* Wakeup all the processors which are spinning in the rendezvous loop.
 	 * They will leave SAL, then spin in the OS with interrupts disabled
@@ -1429,7 +1429,7 @@ ia64_init_handler(struct pt_regs *regs, 
 	 */
 	printk("Delaying for 5 seconds...\n");
 	udelay(5*1000000);
-	ia64_wait_for_slaves(cpu);
+	ia64_wait_for_slaves(cpu, "INIT");
 	/* If nobody intercepts DIE_INIT_MONARCH_PROCESS then we drop through
 	 * to default_monarch_init_process() above and just print all the
 	 * tasks.

^ permalink raw reply related	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (58 preceding siblings ...)
  2006-04-13 23:01 ` Luck, Tony
@ 2006-04-27 23:38 ` Luck, Tony
  2006-05-05 20:04 ` Luck, Tony
                   ` (77 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-04-27 23:38 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/Kconfig                   |    2 
 arch/ia64/configs/sn2_defconfig     |   76 +++++++++++++++++++++---------------
 arch/ia64/ia32/binfmt_elf32.c       |    3 +
 arch/ia64/ia32/ia32_entry.S         |    2 
 arch/ia64/kernel/mca_drv.c          |   54 +++++++++++++++++--------
 arch/ia64/kernel/topology.c         |    7 ---
 arch/ia64/pci/pci.c                 |    3 -
 arch/ia64/sn/kernel/sn2/sn_hwperf.c |    8 +--
 arch/ia64/sn/kernel/xpc_partition.c |    8 ---
 arch/ia64/sn/pci/tioce_provider.c   |    6 +-
 drivers/Kconfig                     |    2 
 include/asm-ia64/acpi.h             |    5 --
 include/asm-ia64/machvec.h          |    2 
 include/asm-ia64/sn/sn2/sn_hwperf.h |    6 ++
 include/asm-ia64/sn/sn_sal.h        |   17 ++++++--
 include/asm-ia64/thread_info.h      |    2 
 include/asm-ia64/topology.h         |    5 ++
 17 files changed, 128 insertions(+), 80 deletions(-)

Brent Casavant:
      [IA64] IOC4 config option ordering

Christoph Lameter:
      [IA64] Setup an IA64 specific reclaim distance

Cliff Wickman:
      [IA64] enable dumps to capture second page of kernel stack

Jack Steiner:
      [IA64] - Fix MAX_PXM_DOMAINS for systems with > 256 nodes
      [IA64-SGI] - Fix discover of nearest cpu node to IO node
      [IA64-SGI] - Reduce overhead of reading sn_topology

Jes Sorensen:
      [IA64] update sn2 defconfig

Jesper Juhl:
      [IA64] Remove redundant NULL checks before kfree

Mike Habeck:
      [IA64-SGI] fix SGI Altix tioce_reserve_m32() bug

Russ Anderson:
      [IA64] Remove unused variable in sn_sal.h
      [IA64-SGI] SN SAL call to inject memory errors
      [IA64] Add mca recovery failure messages

Satoru Takeuchi:
      [IA64] eliminate compile time warnings
      [IA64] eliminate compile time warnings

Tony Luck:
      [IA64] wire up compat_sys_adjtimex()

diff-tree 7384c8bd90a4932517872f9807d34979a6fd29c4 (from 189979619f90fd2eb168fbb9c262569176160624)
Author: Jes Sorensen <jes@sgi.com>
Date:   Thu Apr 27 06:10:35 2006 -0400

    [IA64] update sn2 defconfig
    
    Update SN2 defconfig to latest kernel and add QLA FC drivers commonly
    found in SN2 boxes.
    
    Signed-off-by: Jes Sorensen <jes@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/configs/sn2_defconfig b/arch/ia64/configs/sn2_defconfig
index a718034..f6a8853 100644
--- a/arch/ia64/configs/sn2_defconfig
+++ b/arch/ia64/configs/sn2_defconfig
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.16-rc5
-# Mon Feb 27 16:06:38 2006
+# Linux kernel version: 2.6.17-rc3
+# Thu Apr 27 11:48:23 2006
 #
 
 #
@@ -24,6 +24,7 @@ CONFIG_SYSCTL=y
 # CONFIG_AUDIT is not set
 # CONFIG_IKCONFIG is not set
 CONFIG_CPUSETS=y
+CONFIG_RELAY=y
 CONFIG_INITRAMFS_SOURCE=""
 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 # CONFIG_EMBEDDED is not set
@@ -38,10 +39,6 @@ CONFIG_BASE_FULL=y
 CONFIG_FUTEX=y
 CONFIG_EPOLL=y
 CONFIG_SHMEM=y
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
 CONFIG_SLAB=y
 # CONFIG_TINY_SHMEM is not set
 CONFIG_BASE_SMALL=0
@@ -53,7 +50,6 @@ #
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_MODULE_FORCE_UNLOAD is not set
-CONFIG_OBSOLETE_MODPARM=y
 # CONFIG_MODVERSIONS is not set
 # CONFIG_MODULE_SRCVERSION_ALL is not set
 CONFIG_KMOD=y
@@ -62,6 +58,7 @@ CONFIG_STOP_MACHINE=y
 #
 # Block layer
 #
+# CONFIG_BLK_DEV_IO_TRACE is not set
 
 #
 # IO Schedulers
@@ -84,8 +81,10 @@ CONFIG_64BIT=y
 CONFIG_MMU=y
 CONFIG_SWIOTLB=y
 CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
 CONFIG_TIME_INTERPOLATION=y
+CONFIG_DMI=y
 CONFIG_EFI=y
 CONFIG_GENERIC_IOMAP=y
 CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
@@ -116,7 +115,6 @@ CONFIG_IA64_SGI_SN_XP=m
 CONFIG_FORCE_MAX_ZONEORDER\x17
 CONFIG_SMP=y
 CONFIG_NR_CPUS\x1024
-CONFIG_IA64_NR_NODES%6
 # CONFIG_HOTPLUG_CPU is not set
 CONFIG_SCHED_SMT=y
 CONFIG_PREEMPT=y
@@ -136,6 +134,7 @@ CONFIG_ARCH_FLATMEM_ENABLE=y
 CONFIG_ARCH_SPARSEMEM_ENABLE=y
 CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y
 CONFIG_NUMA=y
+CONFIG_NODES_SHIFT=8
 CONFIG_VIRTUAL_MEM_MAP=y
 CONFIG_HOLES_IN_ZONE=y
 CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y
@@ -187,7 +186,6 @@ #
 CONFIG_PCI=y
 CONFIG_PCI_DOMAINS=y
 # CONFIG_PCI_MSI is not set
-CONFIG_PCI_LEGACY_PROC=y
 # CONFIG_PCI_DEBUG is not set
 
 #
@@ -231,6 +229,7 @@ CONFIG_SYN_COOKIES=y
 # CONFIG_INET_AH is not set
 # CONFIG_INET_ESP is not set
 # CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
 # CONFIG_INET_TUNNEL is not set
 CONFIG_INET_DIAG=m
 CONFIG_INET_TCP_DIAG=m
@@ -238,9 +237,11 @@ # CONFIG_TCP_CONG_ADVANCED is not set
 CONFIG_TCP_CONG_BIC=y
 CONFIG_IPV6=m
 # CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
 # CONFIG_INET6_AH is not set
 # CONFIG_INET6_ESP is not set
 # CONFIG_INET6_IPCOMP is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
 # CONFIG_INET6_TUNNEL is not set
 # CONFIG_IPV6_TUNNEL is not set
 # CONFIG_NETFILTER is not set
@@ -468,9 +469,14 @@ # 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=y
-# CONFIG_SCSI_QLA_FC is not set
+CONFIG_SCSI_QLA_FC=y
+CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE=y
+# CONFIG_SCSI_QLA21XX is not set
+CONFIG_SCSI_QLA22XX=y
+CONFIG_SCSI_QLA2300=y
+CONFIG_SCSI_QLA2322=y
+# CONFIG_SCSI_QLA24XX is not set
 # CONFIG_SCSI_LPFC is not set
 # CONFIG_SCSI_DC395x is not set
 # CONFIG_SCSI_DC390T is not set
@@ -486,6 +492,7 @@ CONFIG_MD_RAID0=y
 CONFIG_MD_RAID1=y
 # CONFIG_MD_RAID10 is not set
 CONFIG_MD_RAID5=y
+# CONFIG_MD_RAID5_RESHAPE is not set
 # CONFIG_MD_RAID6 is not set
 CONFIG_MD_MULTIPATH=y
 # CONFIG_MD_FAULTY is not set
@@ -694,6 +701,7 @@ #
 # Ftape, the floppy tape device driver
 #
 CONFIG_AGP=y
+# CONFIG_AGP_VIA is not set
 CONFIG_AGP_SGI_TIOCA=y
 # CONFIG_DRM is not set
 CONFIG_RAW_DRIVER=m
@@ -735,10 +743,6 @@ # Misc devices
 #
 
 #
-# Multimedia Capabilities Port drivers
-#
-
-#
 # Multimedia devices
 #
 # CONFIG_VIDEO_DEV is not set
@@ -747,6 +751,7 @@ #
 # Digital Video Broadcasting Devices
 #
 # CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
 
 #
 # Graphics support
@@ -757,6 +762,7 @@ #
 # Console display driver support
 #
 CONFIG_VGA_CONSOLE=y
+# CONFIG_VGACON_SOFT_SCROLLBACK is not set
 CONFIG_DUMMY_CONSOLE=y
 
 #
@@ -769,6 +775,7 @@ # USB support
 #
 CONFIG_USB_ARCH_HAS_HCD=y
 CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
 CONFIG_USB=m
 # CONFIG_USB_DEBUG is not set
 
@@ -829,9 +836,7 @@ # 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_TOUCHSCREEN is not set
 # CONFIG_USB_YEALINK is not set
 # CONFIG_USB_XPAD is not set
 # CONFIG_USB_ATI_REMOTE is not set
@@ -844,15 +849,6 @@ # 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
@@ -904,16 +900,30 @@ # MMC/SD Card support
 #
 # CONFIG_MMC is not set
 
+#
+# LED devices
 #
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
 # InfiniBand support
 #
 CONFIG_INFINIBAND=m
 # CONFIG_INFINIBAND_USER_MAD is not set
 CONFIG_INFINIBAND_USER_ACCESS=m
 CONFIG_INFINIBAND_MTHCA=m
-# CONFIG_INFINIBAND_MTHCA_DEBUG is not set
+CONFIG_INFINIBAND_MTHCA_DEBUG=y
 CONFIG_INFINIBAND_IPOIB=m
-# CONFIG_INFINIBAND_IPOIB_DEBUG is not set
+CONFIG_INFINIBAND_IPOIB_DEBUG=y
+# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
 CONFIG_INFINIBAND_SRP=m
 
 #
@@ -921,10 +931,15 @@ # SN Devices
 #
 CONFIG_SGI_IOC4=y
 CONFIG_SGI_IOC3=y
+
+#
+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
 
 #
-# EDAC - error detection and reporting (RAS)
+# Real Time Clock
 #
+# CONFIG_RTC_CLASS is not set
 
 #
 # File systems
@@ -997,7 +1012,6 @@ CONFIG_TMPFS=y
 CONFIG_HUGETLBFS=y
 CONFIG_HUGETLB_PAGE=y
 CONFIG_RAMFS=y
-CONFIG_RELAYFS_FS=m
 # CONFIG_CONFIGFS_FS is not set
 
 #

diff-tree 189979619f90fd2eb168fbb9c262569176160624 (from cda3d4a069b915cf46e640bb6872a9d9aefeaabe)
Author: Russ Anderson <rja@efs.americas.sgi.com>
Date:   Thu Apr 27 10:07:08 2006 -0500

    [IA64] Add mca recovery failure messages
    
    When the mca recovery code encounters a condition that makes
    the MCA non-recoverable, print the reason it could not recover.
    This will make it easier to identify why the recovery code did
    not recover.
    
    Signed-off-by: Russ Anderson <rja@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/mca_drv.c b/arch/ia64/kernel/mca_drv.c
index 37c88eb..ca6666b 100644
--- a/arch/ia64/kernel/mca_drv.c
+++ b/arch/ia64/kernel/mca_drv.c
@@ -62,6 +62,11 @@ typedef enum {
 	ISOLATE_NONE
 } isolate_status_t;
 
+typedef enum {
+	MCA_NOT_RECOVERED = 0,
+	MCA_RECOVERED	  = 1
+} recovery_status_t;
+
 /*
  *  This pool keeps pointers to the section part of SAL error record
  */
@@ -70,7 +75,19 @@ static struct {
 	int	     cur_idx; /* Current index of section pointer list pool */
 	int	     max_idx; /* Maximum index of section pointer list pool */
 } slidx_pool;
+
+static int
+fatal_mca(const char *fmt, ...)
+{
+	va_list args;
+
+	va_start(args, fmt);
+	vprintk(fmt, args);
+	va_end(args);
 
+	return MCA_NOT_RECOVERED;
+}
+
 /**
  * mca_page_isolate - isolate a poisoned page in order not to use it later
  * @paddr:	poisoned memory location
@@ -424,7 +441,7 @@ recover_from_read_error(slidx_table_t *s
 
 	/* Is target address valid? */
 	if (!pbci->tv)
-		return 0;
+		return fatal_mca(KERN_ALERT "MCA: target address not valid\n");
 
 	/*
 	 * cpu read or memory-mapped io read
@@ -442,7 +459,7 @@ recover_from_read_error(slidx_table_t *s
 
 	/* Is minstate valid? */
 	if (!peidx_bottom(peidx) || !(peidx_bottom(peidx)->valid.minstate))
-		return 0;
+		return fatal_mca(KERN_ALERT "MCA: minstate not valid\n");
 	psr1 =(struct ia64_psr *)&(peidx_minstate_area(peidx)->pmsa_ipsr);
 	psr2 =(struct ia64_psr *)&(peidx_minstate_area(peidx)->pmsa_xpsr);
 
@@ -476,12 +493,13 @@ recover_from_read_error(slidx_table_t *s
 			psr2->bn  = 1;
 			psr2->i  = 0;
 
-			return 1;
+			return MCA_RECOVERED;
 		}
 
 	}
 
-	return 0;
+	return fatal_mca(KERN_ALERT "MCA: kernel context not recovered,"
+			  " iip 0x%lx\n", pmsa->pmsa_iip);
 }
 
 /**
@@ -567,13 +585,13 @@ recover_from_processor_error(int platfor
 	 * The machine check is corrected.
 	 */
 	if (psp->cm = 1)
-		return 1;
+		return MCA_RECOVERED;
 
 	/*
 	 * The error was not contained.  Software must be reset.
 	 */
 	if (psp->us || psp->ci = 0)
-		return 0;
+		return fatal_mca(KERN_ALERT "MCA: error not contained\n");
 
 	/*
 	 * The cache check and bus check bits have four possible states
@@ -584,20 +602,22 @@ recover_from_processor_error(int platfor
 	 *    1  1	Memory error, attempt recovery
 	 */
 	if (psp->bc = 0 || pbci = NULL)
-		return 0;
+		return fatal_mca(KERN_ALERT "MCA: No bus check\n");
 
 	/*
 	 * Sorry, we cannot handle so many.
 	 */
 	if (peidx_bus_check_num(peidx) > 1)
-		return 0;
+		return fatal_mca(KERN_ALERT "MCA: Too many bus checks\n");
 	/*
 	 * Well, here is only one bus error.
 	 */
-	if (pbci->ib || pbci->cc)
-		return 0;
+	if (pbci->ib)
+		return fatal_mca(KERN_ALERT "MCA: Internal Bus error\n");
+	if (pbci->cc)
+		return fatal_mca(KERN_ALERT "MCA: Cache-cache error\n");
 	if (pbci->eb && pbci->bsi > 0)
-		return 0;
+		return fatal_mca(KERN_ALERT "MCA: External bus check fatal status\n");
 
 	/*
 	 * This is a local MCA and estimated as recoverble external bus error.
@@ -609,7 +629,7 @@ recover_from_processor_error(int platfor
 	/*
 	 * On account of strange SAL error record, we cannot recover.
 	 */
-	return 0;
+	return fatal_mca(KERN_ALERT "MCA: Strange SAL record\n");
 }
 
 /**
@@ -638,12 +658,10 @@ mca_try_to_recover(void *rec, struct ia6
 
 	 /* Now, OS can recover when there is one processor error section */
 	if (n_proc_err > 1)
-		return 0;
-	else if (n_proc_err = 0) {
+		return fatal_mca(KERN_ALERT "MCA: Too Many Errors\n");
+	else if (n_proc_err = 0)
 		/* Weird SAL record ... We need not to recover */
-
-		return 1;
-	}
+		return fatal_mca(KERN_ALERT "MCA: Weird SAL record\n");
 
 	/* Make index of processor error section */
 	mca_make_peidx((sal_log_processor_info_t*)
@@ -654,7 +672,7 @@ mca_try_to_recover(void *rec, struct ia6
 
 	/* Check whether MCA is global or not */
 	if (is_mca_global(&peidx, &pbci, sos))
-		return 0;
+		return fatal_mca(KERN_ALERT "MCA: global MCA\n");
 	
 	/* Try to recover a processor error */
 	return recover_from_processor_error(platform_err, &slidx, &peidx,

diff-tree cda3d4a069b915cf46e640bb6872a9d9aefeaabe (from 1df57c0c21c92a6d4fcfe5304c84151ed9beb7a2)
Author: Mike Habeck <habeck@sgi.com>
Date:   Wed Apr 26 12:05:50 2006 -0500

    [IA64-SGI] fix SGI Altix tioce_reserve_m32() bug
    
    The following patch fixes a bug in the SGI Altix tioce_reserve_m32()
    code.  The bug was that we could walking past the end of the CE ASIC
    32/40bit PMU ATE Buffer, resulting in a PIO Reply Error.
    
    Signed-off-by: Mike Habeck <habeck@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/sn/pci/tioce_provider.c b/arch/ia64/sn/pci/tioce_provider.c
index fa073cc..8332956 100644
--- a/arch/ia64/sn/pci/tioce_provider.c
+++ b/arch/ia64/sn/pci/tioce_provider.c
@@ -682,9 +682,6 @@ tioce_reserve_m32(struct tioce_kernel *c
 	int ate_index, last_ate, ps;
 	struct tioce *ce_mmr;
 
-	if (!TIOCE_M32_ADDR(base))
-		return;
-
 	ce_mmr = (struct tioce *)ce_kern->ce_common->ce_pcibus.bs_base;
 	ps = ce_kern->ce_ate3240_pagesize;
 	ate_index = ATE_PAGE(base, ps);
@@ -692,6 +689,9 @@ tioce_reserve_m32(struct tioce_kernel *c
 
 	if (ate_index < 64)
 		ate_index = 64;
+
+	if (last_ate >= TIOCE_NUM_M3240_ATES)
+		last_ate = TIOCE_NUM_M3240_ATES - 1;
 
 	while (ate_index <= last_ate) {
 		u64 ate;

diff-tree 1df57c0c21c92a6d4fcfe5304c84151ed9beb7a2 (from dd4cb9f8ac9717c9db2b2afc5a82cb95a3d5dec3)
Author: Cliff Wickman <cpw@sgi.com>
Date:   Tue Apr 25 10:47:48 2006 -0500

    [IA64] enable dumps to capture second page of kernel stack
    
    In SLES10 (2.6.16) crash dumping (in my experience, LKCD) is unable to
    capture the second page of the 2-page task/stack allocation.
    This is particularly troublesome for dump analysis, as the stack traceback
    cannot be done.
      (A similar convention is probably needed throughout the kernel to make
       kernel multi-page allocations detectable for dumping)
    
    Multi-page kernel allocations are represented by the single page structure
    associated with the first page of the allocation.  The page structures
    associated with the other pages are unintialized.
    
    If the dumper is selecting only kernel pages it has no way to identify
    any but the first page of the allocation.
    
    The fix is to make the task/stack allocation a compound page.
    
    Signed-off-by: Cliff Wickman <cpw@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/include/asm-ia64/thread_info.h b/include/asm-ia64/thread_info.h
index 56394a2..e5392c4 100644
--- a/include/asm-ia64/thread_info.h
+++ b/include/asm-ia64/thread_info.h
@@ -67,7 +67,7 @@ #define setup_thread_stack(p, org) \
 #define end_of_stack(p) (unsigned long *)((void *)(p) + IA64_RBS_OFFSET)
 
 #define __HAVE_ARCH_TASK_STRUCT_ALLOCATOR
-#define alloc_task_struct()	((task_t *)__get_free_pages(GFP_KERNEL, KERNEL_STACK_SIZE_ORDER))
+#define alloc_task_struct()	((task_t *)__get_free_pages(GFP_KERNEL | __GFP_COMP, KERNEL_STACK_SIZE_ORDER))
 #define free_task_struct(tsk)	free_pages((unsigned long) (tsk), KERNEL_STACK_SIZE_ORDER)
 
 #endif /* !__ASSEMBLY */

diff-tree dd4cb9f8ac9717c9db2b2afc5a82cb95a3d5dec3 (from f0fe253c4719faf76d40f581cdc0e8aef77273bb)
Author: Jack Steiner <steiner@sgi.com>
Date:   Sat Apr 22 09:37:19 2006 -0500

    [IA64-SGI] - Reduce overhead of reading sn_topology
    
    MPI programs using certain debug options have a long
    startup time. This was traced to a "vmalloc/vfree" in
    the code that reads /proc/sgi_sn/sn_topology. On large
    systems, vfree requires an IPI to all cpus to do TLB
    purging.
    
    Replace the vmalloc/vfree with kmalloc/kfree. Although
    the size of the structure being allocated is unknown, it
    will not not exceed 96 bytes.
    
    Signed-off-by: Jack Steiner <steiner@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/sn/kernel/sn2/sn_hwperf.c b/arch/ia64/sn/kernel/sn2/sn_hwperf.c
index 7ec65bc..739c948 100644
--- a/arch/ia64/sn/kernel/sn2/sn_hwperf.c
+++ b/arch/ia64/sn/kernel/sn2/sn_hwperf.c
@@ -493,7 +493,7 @@ static int sn_topology_show(struct seq_f
 		 * numalink ports
 		 */
 		sz = obj->ports * sizeof(struct sn_hwperf_port_info);
-		if ((ptdata = vmalloc(sz)) = NULL)
+		if ((ptdata = kmalloc(sz, GFP_KERNEL)) = NULL)
 			return -ENOMEM;
 		e = ia64_sn_hwperf_op(sn_hwperf_master_nasid,
 				      SN_HWPERF_ENUM_PORTS, obj->id, sz,
@@ -541,7 +541,7 @@ static int sn_topology_show(struct seq_f
 				(SN_HWPERF_IS_NL3ROUTER(obj) ||
 				SN_HWPERF_IS_NL3ROUTER(p)) ?  "LLP3" : "LLP4");
 		}
-		vfree(ptdata);
+		kfree(ptdata);
 	}
 
 	return 0;

diff-tree f0fe253c4719faf76d40f581cdc0e8aef77273bb (from c1311af12c7ca176a790a911a3fb6fed1f3bb387)
Author: Jack Steiner <steiner@sgi.com>
Date:   Sat Apr 22 09:36:07 2006 -0500

    [IA64-SGI] - Fix discover of nearest cpu node to IO node
    
    Fix a bug that causes discovery of the nearest node/cpu to
    a TIO (IO node) to fail.
    
    Signed-off-by: Jack Steiner <steiner@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/sn/kernel/sn2/sn_hwperf.c b/arch/ia64/sn/kernel/sn2/sn_hwperf.c
index d917afa..7ec65bc 100644
--- a/arch/ia64/sn/kernel/sn2/sn_hwperf.c
+++ b/arch/ia64/sn/kernel/sn2/sn_hwperf.c
@@ -284,6 +284,8 @@ static int sn_hwperf_get_nearest_node_ob
 	/* find nearest node with cpus and nearest memory */
 	for (router=NULL, j=0; j < op->ports; j++) {
 		dest = sn_hwperf_findobj_id(objbuf, nobj, ptdata[j].conn_id);
+		if (dest && SN_HWPERF_IS_ROUTER(dest))
+			router = dest;
 		if (!dest || SN_HWPERF_FOREIGN(dest) ||
 		    !SN_HWPERF_IS_NODE(dest) || SN_HWPERF_IS_IONODE(dest)) {
 			continue;
@@ -299,8 +301,6 @@ static int sn_hwperf_get_nearest_node_ob
 				*near_mem_node = c;
 			found_mem++;
 		}
-		if (SN_HWPERF_IS_ROUTER(dest))
-			router = dest;
 	}
 
 	if (router && (!found_cpu || !found_mem)) {
diff --git a/include/asm-ia64/sn/sn2/sn_hwperf.h b/include/asm-ia64/sn/sn2/sn_hwperf.h
index 291ef3d..e61ebac 100644
--- a/include/asm-ia64/sn/sn2/sn_hwperf.h
+++ b/include/asm-ia64/sn/sn2/sn_hwperf.h
@@ -45,8 +45,12 @@ #define sn_hwp_flags		f.b.flags
 #define SN_HWPERF_IS_NODE(x)		((x) && strstr((x)->name, "SHub"))
 #define SN_HWPERF_IS_NODE_SHUB2(x)	((x) && strstr((x)->name, "SHub 2."))
 #define SN_HWPERF_IS_IONODE(x)		((x) && strstr((x)->name, "TIO"))
-#define SN_HWPERF_IS_ROUTER(x)		((x) && strstr((x)->name, "Router"))
 #define SN_HWPERF_IS_NL3ROUTER(x)	((x) && strstr((x)->name, "NL3Router"))
+#define SN_HWPERF_IS_NL4ROUTER(x)	((x) && strstr((x)->name, "NL4Router"))
+#define SN_HWPERF_IS_OLDROUTER(x)	((x) && strstr((x)->name, "Router"))
+#define SN_HWPERF_IS_ROUTER(x)		(SN_HWPERF_IS_NL3ROUTER(x) || 		\
+					 	SN_HWPERF_IS_NL4ROUTER(x) || 	\
+					 	SN_HWPERF_IS_OLDROUTER(x))
 #define SN_HWPERF_FOREIGN(x)		((x) && !(x)->sn_hwp_this_part && !(x)->sn_hwp_is_shared)
 #define SN_HWPERF_SAME_OBJTYPE(x,y)	((SN_HWPERF_IS_NODE(x) && SN_HWPERF_IS_NODE(y)) ||\
 					(SN_HWPERF_IS_IONODE(x) && SN_HWPERF_IS_IONODE(y)) ||\

diff-tree c1311af12c7ca176a790a911a3fb6fed1f3bb387 (from e5ecc192dfc5e0b325dd8c99ce4c755714c9acbf)
Author: Brent Casavant <bcasavan@sgi.com>
Date:   Thu Apr 20 15:38:16 2006 -0500

    [IA64] IOC4 config option ordering
    
    SERIAL_SGI_IOC4 and BLK_DEV_SGIIOC4 depend upon SGI_IOC4, and
    SERIAL_SGI_IOC3 depends upon SGI_IOC3.  Currently the definitions
    are out of order in the config sequence.
    
    Fix by including drivers/sn/Kconfig immediately after SGI_SN,
    upon which SGI_IOC4 and SGI_IOC3 depend.
    
    Signed-off-by: Brent Casavant <bcasavan@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
index 9f40eef..0f3076a 100644
--- a/arch/ia64/Kconfig
+++ b/arch/ia64/Kconfig
@@ -413,6 +413,8 @@ config IA64_PALINFO
 config SGI_SN
 	def_bool y if (IA64_SGI_SN2 || IA64_GENERIC)
 
+source "drivers/sn/Kconfig"
+
 source "drivers/firmware/Kconfig"
 
 source "fs/Kconfig.binfmt"
diff --git a/drivers/Kconfig b/drivers/Kconfig
index 5c91d6a..aeb5ab2 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -68,8 +68,6 @@ source "drivers/leds/Kconfig"
 
 source "drivers/infiniband/Kconfig"
 
-source "drivers/sn/Kconfig"
-
 source "drivers/edac/Kconfig"
 
 source "drivers/rtc/Kconfig"

diff-tree e5ecc192dfc5e0b325dd8c99ce4c755714c9acbf (from a72391e42f0a13116995045b3d492d660f96697d)
Author: Christoph Lameter <clameter@sgi.com>
Date:   Thu Apr 13 18:23:53 2006 -0700

    [IA64] Setup an IA64 specific reclaim distance
    
    RECLAIM_DISTANCE is checked on bootup against the SLIT table distances.
    Zone reclaim is important for system that have higher latencies but not for
    systems that have multiple nodes on one motherboard and therefore low latencies.
    
    We found that on motherboard latencies are typically 1 to 1.4 of local memory
    access speed whereas multinode systems which benefit from zone reclaim have
    usually more than 1.5 times the latency of a local access.
    
    Set the reclaim distance for IA64 to 1.5 times.
    
    Signed-off-by: Christoph Lameter <clameter@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/include/asm-ia64/topology.h b/include/asm-ia64/topology.h
index 3ee19df..616b5ed 100644
--- a/include/asm-ia64/topology.h
+++ b/include/asm-ia64/topology.h
@@ -23,6 +23,11 @@ #ifdef CONFIG_NUMA
 #define PENALTY_FOR_NODE_WITH_CPUS 255
 
 /*
+ * Distance above which we begin to use zone reclaim
+ */
+#define RECLAIM_DISTANCE 15
+
+/*
  * Returns the number of the node containing CPU 'cpu'
  */
 #define cpu_to_node(cpu) (int)(cpu_to_node_map[cpu])

diff-tree a72391e42f0a13116995045b3d492d660f96697d (from ee6d4b6ef8df79893d6d4a653b16c99bdb6d2784)
Author: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Date:   Thu Apr 20 18:49:48 2006 +0900

    [IA64] eliminate compile time warnings
    
    This patch removes following compile time warnings:
    
    drivers/pci/pci-sysfs.c: In function `pci_read_legacy_io':
    drivers/pci/pci-sysfs.c:257: warning: implicit declaration of function `ia64_pci_legacy_read'
    drivers/pci/pci-sysfs.c: In function `pci_write_legacy_io':
    drivers/pci/pci-sysfs.c:280: warning: implicit declaration of function `ia64_pci_legacy_write'
    
    It also fixes wrong definition of ia64_pci_legacy_write (type of `bus' is not
    `pci_dev', but `pci_bus').
    
    Signed-Off-By: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c
index 9ba32b2..ab829a2 100644
--- a/arch/ia64/pci/pci.c
+++ b/arch/ia64/pci/pci.c
@@ -31,7 +31,6 @@ #include <asm/smp.h>
 #include <asm/irq.h>
 #include <asm/hw_irq.h>
 
-
 /*
  * Low-level SAL-based PCI configuration access functions. Note that SAL
  * calls are already serialized (via sal_lock), so we don't need another
@@ -707,7 +706,7 @@ int ia64_pci_legacy_read(struct pci_bus 
  *
  * Simply writes @size bytes of @val to @port.
  */
-int ia64_pci_legacy_write(struct pci_dev *bus, u16 port, u32 val, u8 size)
+int ia64_pci_legacy_write(struct pci_bus *bus, u16 port, u32 val, u8 size)
 {
 	int ret = size;
 
diff --git a/include/asm-ia64/machvec.h b/include/asm-ia64/machvec.h
index c3e4ed8..a9c995a 100644
--- a/include/asm-ia64/machvec.h
+++ b/include/asm-ia64/machvec.h
@@ -347,9 +347,11 @@ # define platform_pci_get_legacy_mem	ia6
 #endif
 #ifndef platform_pci_legacy_read
 # define platform_pci_legacy_read	ia64_pci_legacy_read
+extern int ia64_pci_legacy_read(struct pci_bus *bus, u16 port, u32 *val, u8 size);
 #endif
 #ifndef platform_pci_legacy_write
 # define platform_pci_legacy_write	ia64_pci_legacy_write
+extern int ia64_pci_legacy_write(struct pci_bus *bus, u16 port, u32 val, u8 size);
 #endif
 #ifndef platform_inb
 # define platform_inb		__ia64_inb

diff-tree ee6d4b6ef8df79893d6d4a653b16c99bdb6d2784 (from 86db2f4239e2556cd37b853c2307aa9d43041458)
Author: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Date:   Thu Apr 20 18:49:41 2006 +0900

    [IA64] eliminate compile time warnings
    
    This is a trivial patch to remove following compile time warning:
    
    arch/ia64/ia32/../../../fs/binfmt_elf.c:508: warning: 'randomize_stack_top' defined but not used
    
    Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/ia32/binfmt_elf32.c b/arch/ia64/ia32/binfmt_elf32.c
index 4e7a6a1..da03c06 100644
--- a/arch/ia64/ia32/binfmt_elf32.c
+++ b/arch/ia64/ia32/binfmt_elf32.c
@@ -35,6 +35,9 @@ extern void ia64_elf32_init (struct pt_r
 
 static void elf32_set_personality (void);
 
+static unsigned long __attribute ((unused))
+randomize_stack_top(unsigned long stack_top);
+
 #define setup_arg_pages(bprm,tos,exec)		ia32_setup_arg_pages(bprm,exec)
 #define elf_map				elf32_map
 

diff-tree 86db2f4239e2556cd37b853c2307aa9d43041458 (from 0d9adec525b87d8ab7e64efeabffb5b3f293056e)
Author: Russ Anderson <rja@efs.americas.sgi.com>
Date:   Thu Apr 20 17:05:43 2006 -0700

    [IA64-SGI] SN SAL call to inject memory errors
    
    The SGI Altix SAL provides an interface for modifying
    the ECC on memory to create memory errors.  The SAL call
    can be used to inject memory errors for testing MCA recovery
    code.
    
    Signed-off-by: Russ Anderson (rja@sgi.com)
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/include/asm-ia64/sn/sn_sal.h b/include/asm-ia64/sn/sn_sal.h
index 7ddce80..51aca02 100644
--- a/include/asm-ia64/sn/sn_sal.h
+++ b/include/asm-ia64/sn/sn_sal.h
@@ -85,6 +85,7 @@ #define SN_SAL_IOIF_GET_PCI_TOPOLOGY		  
 
 #define  SN_SAL_GET_PROM_FEATURE_SET		   0x02000065
 #define  SN_SAL_SET_OS_FEATURE_SET		   0x02000066
+#define  SN_SAL_INJECT_ERROR			   0x02000067
 
 /*
  * Service-specific constants
@@ -1138,4 +1139,16 @@ ia64_sn_set_os_feature(int feature)
 	return rv.status;
 }
 
+static inline int
+sn_inject_error(u64 paddr, u64 *data, u64 *ecc)
+{
+	struct ia64_sal_retval ret_stuff;
+	unsigned long irq_flags;
+
+	local_irq_save(irq_flags);
+	ia64_sal_oemcall_nolock(&ret_stuff, SN_SAL_INJECT_ERROR, paddr, (u64)data,
+				(u64)ecc, 0, 0, 0, 0);
+	local_irq_restore(irq_flags);
+	return ret_stuff.status;
+}
 #endif /* _ASM_IA64_SN_SN_SAL_H */

diff-tree 0d9adec525b87d8ab7e64efeabffb5b3f293056e (from 308a878210cde6ab19df9f392c24db53ad6f56bf)
Author: Jack Steiner <steiner@sgi.com>
Date:   Tue Apr 18 15:00:45 2006 -0500

    [IA64] - Fix MAX_PXM_DOMAINS for systems with > 256 nodes
    
    Correctly size the PXM-related arrays for systems that have more than
    256 nodes.
    
    Signed-off-by: Jack Steiner <steiner@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/include/asm-ia64/acpi.h b/include/asm-ia64/acpi.h
index d734585..09a5dd0 100644
--- a/include/asm-ia64/acpi.h
+++ b/include/asm-ia64/acpi.h
@@ -110,9 +110,8 @@ extern void prefill_possible_map(void);
 extern int additional_cpus;
 
 #ifdef CONFIG_ACPI_NUMA
-/* Proximity bitmap length; _PXM is at most 255 (8 bit)*/
-#ifdef CONFIG_IA64_NR_NODES
-#define MAX_PXM_DOMAINS CONFIG_IA64_NR_NODES
+#if MAX_NUMNODES > 256
+#define MAX_PXM_DOMAINS MAX_NUMNODES
 #else
 #define MAX_PXM_DOMAINS (256)
 #endif

diff-tree 308a878210cde6ab19df9f392c24db53ad6f56bf (from cbf283c048798ada7e062892b21de85fb5727243)
Author: Russ Anderson <rja@efs.americas.sgi.com>
Date:   Tue Apr 18 11:26:34 2006 -0500

    [IA64] Remove unused variable in sn_sal.h
    
    cnodeid was being set but not used.  The dead code was
    left over from a previous version that grabbed a per node lock.
    
    Signed-off-by: Russ Anderson (rja@sgi.com)
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/include/asm-ia64/sn/sn_sal.h b/include/asm-ia64/sn/sn_sal.h
index bf4cc86..7ddce80 100644
--- a/include/asm-ia64/sn/sn_sal.h
+++ b/include/asm-ia64/sn/sn_sal.h
@@ -8,7 +8,7 @@ #define _ASM_IA64_SN_SN_SAL_H
  * License.  See the file "COPYING" in the main directory of this archive
  * for more details.
  *
- * Copyright (c) 2000-2005 Silicon Graphics, Inc.  All rights reserved.
+ * Copyright (c) 2000-2006 Silicon Graphics, Inc.  All rights reserved.
  */
 
 
@@ -705,10 +705,8 @@ static inline int
 sn_change_memprotect(u64 paddr, u64 len, u64 perms, u64 *nasid_array)
 {
 	struct ia64_sal_retval ret_stuff;
-	int cnodeid;
 	unsigned long irq_flags;
 
-	cnodeid = nasid_to_cnodeid(get_node_number(paddr));
 	local_irq_save(irq_flags);
 	ia64_sal_oemcall_nolock(&ret_stuff, SN_SAL_MEMPROTECT, paddr, len,
 				(u64)nasid_array, perms, 0, 0, 0);

diff-tree cbf283c048798ada7e062892b21de85fb5727243 (from c6180deb1da5d087341fb5a3c1a15e61492dcd6b)
Author: Jesper Juhl <jesper.juhl@gmail.com>
Date:   Thu Apr 20 10:11:09 2006 -0700

    [IA64] Remove redundant NULL checks before kfree
    
    Signed-off-by: Jesper Juhl <jesper.juhl@gmail.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/topology.c b/arch/ia64/kernel/topology.c
index b47476d..e9b628b 100644
--- a/arch/ia64/kernel/topology.c
+++ b/arch/ia64/kernel/topology.c
@@ -305,13 +305,10 @@ static struct kobj_type cache_ktype_perc
 
 static void __cpuinit cpu_cache_sysfs_exit(unsigned int cpu)
 {
-	if (all_cpu_cache_info[cpu].cache_leaves) {
-		kfree(all_cpu_cache_info[cpu].cache_leaves);
-		all_cpu_cache_info[cpu].cache_leaves = NULL;
-	}
+	kfree(all_cpu_cache_info[cpu].cache_leaves);
+	all_cpu_cache_info[cpu].cache_leaves = NULL;
 	all_cpu_cache_info[cpu].num_cache_leaves = 0;
 	memset(&all_cpu_cache_info[cpu].kobj, 0, sizeof(struct kobject));
-
 	return;
 }
 
diff --git a/arch/ia64/sn/kernel/xpc_partition.c b/arch/ia64/sn/kernel/xpc_partition.c
index 9421142..2a89cfc 100644
--- a/arch/ia64/sn/kernel/xpc_partition.c
+++ b/arch/ia64/sn/kernel/xpc_partition.c
@@ -136,9 +136,7 @@ xpc_get_rsvd_page_pa(int nasid)
 		}
 
 		if (L1_CACHE_ALIGN(len) > buf_len) {
-			if (buf_base != NULL) {
-				kfree(buf_base);
-			}
+			kfree(buf_base);
 			buf_len = L1_CACHE_ALIGN(len);
 			buf = (u64) xpc_kmalloc_cacheline_aligned(buf_len,
 							GFP_KERNEL, &buf_base);
@@ -159,9 +157,7 @@ xpc_get_rsvd_page_pa(int nasid)
 		}
 	}
 
-	if (buf_base != NULL) {
-		kfree(buf_base);
-	}
+	kfree(buf_base);
 
 	if (status != SALRET_OK) {
 		rp_pa = 0;

diff-tree c6180deb1da5d087341fb5a3c1a15e61492dcd6b (from 402a26f0c040077ed6f941eefac5a6971f0d5f40)
Author: Luck, Tony <tony.luck@intel.com>
Date:   Tue Apr 18 21:14:22 2006 -0700

    [IA64] wire up compat_sys_adjtimex()
    
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/ia32/ia32_entry.S b/arch/ia64/ia32/ia32_entry.S
index 95fe044..a32cd59 100644
--- a/arch/ia64/ia32/ia32_entry.S
+++ b/arch/ia64/ia32/ia32_entry.S
@@ -334,7 +334,7 @@ ia32_syscall_table:
 	data8 sys_setdomainname
 	data8 sys32_newuname
 	data8 sys32_modify_ldt
-	data8 sys_ni_syscall	/* adjtimex */
+	data8 compat_sys_adjtimex
 	data8 sys32_mprotect	  /* 125 */
 	data8 compat_sys_sigprocmask
 	data8 sys_ni_syscall	/* create_module */

^ permalink raw reply related	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (59 preceding siblings ...)
  2006-04-27 23:38 ` Luck, Tony
@ 2006-05-05 20:04 ` Luck, Tony
  2006-05-17 21:16 ` Luck, Tony
                   ` (76 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-05-05 20:04 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/lib/memcpy_mck.S |    9 ++++++---
 include/asm-ia64/bitops.h  |    1 -
 2 files changed, 6 insertions(+), 4 deletions(-)

Chen, Kenneth W:
      [IA64] strcpy returns NULL pointer and not destination pointer

Jon Mason:
      [IA64] remove asm-ia64/bitops.h self-inclusion

diff-tree 913ed41eb5c948d2f8b5deffd29c2638eceef3d7 (from 3e6e155646706f1ef9f791a4402d145f112a3f8d)
Author: Jon Mason <jdmason@us.ibm.com>
Date:   Wed May 3 17:26:58 2006 -0500

    [IA64] remove asm-ia64/bitops.h self-inclusion
    
    asm-ia64/bitops.h includes itself.  The #ifndef _ASM_IA64_BITOPS_H
    prevents this from being an issue, but it should still be removed.
    
    Signed-off-by: Jon Mason <jdmason@us.ibm.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/include/asm-ia64/bitops.h b/include/asm-ia64/bitops.h
index 90921e1..6cc517e 100644
--- a/include/asm-ia64/bitops.h
+++ b/include/asm-ia64/bitops.h
@@ -11,7 +11,6 @@ #define _ASM_IA64_BITOPS_H
 
 #include <linux/compiler.h>
 #include <linux/types.h>
-#include <asm/bitops.h>
 #include <asm/intrinsics.h>
 
 /**

diff-tree 3e6e155646706f1ef9f791a4402d145f112a3f8d (from d98550e334715b2d9e45f8f0f4e1608720108640)
Author: Chen, Kenneth W <kenneth.w.chen@intel.com>
Date:   Wed May 3 11:53:43 2006 -0700

    [IA64] strcpy returns NULL pointer and not destination pointer
    
    Bob Picco noted that 6edfba1b33c701108717f4e036320fc39abe1912
    dropped the -ffreestanding compiler flag from the top level
    Makefile, which allows the compiler to substitute memcpy() in
    places where strcpy() is used with a known size source string.
    But the ia64 memcpy() returns 0 for success, and "bytes copied"
    for failure.
    
    Fix to return the address of the destination string (like
    stdlibc version, and other architectures).  There are no
    places where ia64 specific code makes use of the non-standard
    return value.
    
    Signed-off-by: Ken Chen <kenneth.w.chen@intel.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/lib/memcpy_mck.S b/arch/ia64/lib/memcpy_mck.S
index 46c9331..9e534d5 100644
--- a/arch/ia64/lib/memcpy_mck.S
+++ b/arch/ia64/lib/memcpy_mck.S
@@ -6,7 +6,9 @@
  *	in1:	source address
  *	in2:	number of bytes to copy
  * Output:
- * 	0 if success, or number of byte NOT copied if error occurred.
+ *	for memcpy:    return dest
+ * 	for copy_user: return 0 if success,
+ *		       or number of byte NOT copied if error occurred.
  *
  * Copyright (C) 2002 Intel Corp.
  * Copyright (C) 2002 Ken Chen <kenneth.w.chen@intel.com>
@@ -73,6 +75,7 @@ GLOBAL_ENTRY(memcpy)
 	and	r28=0x7,in0
 	and	r29=0x7,in1
 	mov	f6ð
+	mov	retval=in0
 	br.cond.sptk .common_code
 	;;
 END(memcpy)
@@ -84,7 +87,7 @@ GLOBAL_ENTRY(__copy_user)
 	mov	f6ñ
 	mov	saved_in0=in0	// save dest pointer
 	mov	saved_in1=in1	// save src pointer
-	mov	saved_in2=in2	// save len
+	mov	retval=r0	// initialize return value
 	;;
 .common_code:
 	cmp.gt	p15,p0=8,in2	// check for small size
@@ -92,7 +95,7 @@ GLOBAL_ENTRY(__copy_user)
 	cmp.ne	p14,p0=0,r29	// check src alignment
 	add	src0=0,in1
 	sub	r30=8,r28	// for .align_dest
-	mov	retval=r0	// initialize return value
+	mov	saved_in2=in2	// save len
 	;;
 	add	dst0=0,in0
 	add	dst1=1,in0	// dest odd index

^ permalink raw reply related	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (60 preceding siblings ...)
  2006-05-05 20:04 ` Luck, Tony
@ 2006-05-17 21:16 ` Luck, Tony
  2006-06-23 22:24 ` Luck, Tony
                   ` (75 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-05-17 21:16 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/configs/sn2_defconfig |    4 ++--
 arch/ia64/kernel/iosapic.c      |    4 ++--
 arch/ia64/kernel/irq.c          |    1 -
 3 files changed, 4 insertions(+), 5 deletions(-)

Chen, Kenneth W:
      [IA64] fix broken irq affinity
      [IA64] one-line cleanup on set_irq_affinity_info

Jes Sorensen:
      [IA64] sn2 defconfig

diff-tree 4c31ce8fea9760961a2d1b1d6c84b7590c17ae38 (from 41503def5d83bada6a2fd792e636ccc28a285f38)
Author: Chen, Kenneth W <kenneth.w.chen@intel.com>
Date:   Tue May 16 16:34:57 2006 -0700

    [IA64] one-line cleanup on set_irq_affinity_info
    
    Calls to set_irq_info in set_irq_affinity_info() is redundant because
    irq_affinity mask was set just one line immediately above it.  Remove
    that duplicate call.
    
    Signed-off-by: Ken Chen <kenneth.w.chen@intel.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/irq.c b/arch/ia64/kernel/irq.c
index 5ce908e..9c72ea3 100644
--- a/arch/ia64/kernel/irq.c
+++ b/arch/ia64/kernel/irq.c
@@ -101,7 +101,6 @@ void set_irq_affinity_info (unsigned int
 
 	if (irq < NR_IRQS) {
 		irq_affinity[irq] = mask;
-		set_irq_info(irq, mask);
 		irq_redir[irq] = (char) (redir & 0xff);
 	}
 }

diff-tree 41503def5d83bada6a2fd792e636ccc28a285f38 (from 1101ece44e00cfe31a2fd9d3222d05f927b00ef8)
Author: Chen, Kenneth W <kenneth.w.chen@intel.com>
Date:   Tue May 16 16:29:00 2006 -0700

    [IA64] fix broken irq affinity
    
    When CONFIG_PCI_MSI is set, move_irq() is an empty function, causing
    grief when sys admin tries to bind interrupt to CPU.
    
    Signed-off-by: Ken Chen <kenneth.w.chen@intel.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/iosapic.c b/arch/ia64/kernel/iosapic.c
index 7956eb9..d58c1c5 100644
--- a/arch/ia64/kernel/iosapic.c
+++ b/arch/ia64/kernel/iosapic.c
@@ -416,7 +416,7 @@ iosapic_end_level_irq (unsigned int irq)
 	ia64_vector vec = irq_to_vector(irq);
 	struct iosapic_rte_info *rte;
 
-	move_irq(irq);
+	move_native_irq(irq);
 	list_for_each_entry(rte, &iosapic_intr_info[vec].rtes, rte_list)
 		iosapic_eoi(rte->addr, vec);
 }
@@ -458,7 +458,7 @@ iosapic_ack_edge_irq (unsigned int irq)
 {
 	irq_desc_t *idesc = irq_descp(irq);
 
-	move_irq(irq);
+	move_native_irq(irq);
 	/*
 	 * Once we have recorded IRQ_PENDING already, we can mask the
 	 * interrupt for real. This prevents IRQ storms from unhandled

diff-tree 1101ece44e00cfe31a2fd9d3222d05f927b00ef8 (from c4694c76ce28dd7e415b4f3014d8c6e580b5f3d2)
Author: Jes Sorensen <jes@sgi.com>
Date:   Mon May 15 05:07:54 2006 -0400

    [IA64] sn2 defconfig
    
    Set node shift to 10 on SN2 and disable mutex debugging.
    
    Signed-off-by: Jes Sorensen <jes@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/configs/sn2_defconfig b/arch/ia64/configs/sn2_defconfig
index f6a8853..9ea3539 100644
--- a/arch/ia64/configs/sn2_defconfig
+++ b/arch/ia64/configs/sn2_defconfig
@@ -134,7 +134,7 @@ CONFIG_ARCH_FLATMEM_ENABLE=y
 CONFIG_ARCH_SPARSEMEM_ENABLE=y
 CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y
 CONFIG_NUMA=y
-CONFIG_NODES_SHIFT=8
+CONFIG_NODES_SHIFT\x10
 CONFIG_VIRTUAL_MEM_MAP=y
 CONFIG_HOLES_IN_ZONE=y
 CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y
@@ -1159,7 +1159,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
 # CONFIG_SCHEDSTATS is not set
 # CONFIG_DEBUG_SLAB is not set
 CONFIG_DEBUG_PREEMPT=y
-CONFIG_DEBUG_MUTEXES=y
+# CONFIG_DEBUG_MUTEXES is not set
 # CONFIG_DEBUG_SPINLOCK is not set
 # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
 # CONFIG_DEBUG_KOBJECT is not set

^ permalink raw reply related	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (61 preceding siblings ...)
  2006-05-17 21:16 ` Luck, Tony
@ 2006-06-23 22:24 ` Luck, Tony
  2006-06-28 19:03 ` Luck, Tony
                   ` (74 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-06-23 22:24 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 Documentation/ia64/aliasing.txt     |  208 ++++++++++++++++++++++++++++++++++++
 arch/ia64/Kconfig                   |    2 
 arch/ia64/Makefile                  |    2 
 arch/ia64/kernel/acpi.c             |    4 
 arch/ia64/kernel/asm-offsets.c      |   16 ++
 arch/ia64/kernel/efi.c              |  156 +++++++++++++++++----------
 arch/ia64/kernel/efi_stub.S         |    2 
 arch/ia64/kernel/entry.h            |    1 
 arch/ia64/kernel/mca_asm.S          |   28 ++--
 arch/ia64/kernel/sal.c              |    6 -
 arch/ia64/kernel/setup.c            |    1 
 arch/ia64/mm/ioremap.c              |   27 +++-
 arch/ia64/pci/pci.c                 |   17 ++
 arch/ia64/sn/kernel/sn2/sn_hwperf.c |   50 ++++----
 arch/ia64/sn/pci/tioce_provider.c   |    4 
 include/asm-ia64/io.h               |    1 
 include/asm-ia64/mca.h              |    9 +
 include/asm-ia64/pgtable.h          |   22 +--
 include/asm-ia64/sn/sn_sal.h        |    2 
 include/linux/efi.h                 |    1 
 20 files changed, 434 insertions(+), 125 deletions(-)

Alex Williamson:
      [IA64] add vmlinuz target
      [IA64] sanity check reserved region usage

Bjorn Helgaas:
      [IA64] rework memory attribute aliasing

David Mosberger-Tang:
      [IA64] make efi_stub.S fit in 80 cols

Ian Wienand:
      [IA64] SKI Simulator boot

Jack Steiner:
      [IA64-SGI] SN topology fix for large systems

Keith Owens:
      [IA64] Sanitize assembler code for ia64_sal_os_state

Kenji Kaneshige:
      [IA64] Make PCI Express support selectable

Mike Habeck:
      [IA64-SGI] fix SGI Altix tioce_bus_fixup() bug

Russ Anderson:
      [IA64-SGI] Remove SN SAL error handling feature bit that is no longer needed

Tony Luck:
      Pull rework-memory-attribute-aliasing into release branch
      Auto-update from upstream
      [IA64] fix ia64 build (fadt_descriptor)

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (62 preceding siblings ...)
  2006-06-23 22:24 ` Luck, Tony
@ 2006-06-28 19:03 ` Luck, Tony
  2006-08-03 19:18 ` Luck, Tony
                   ` (73 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-06-28 19:03 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/configs/tiger_defconfig |    2 +-
 arch/ia64/kernel/palinfo.c        |    2 +-
 arch/ia64/sn/kernel/setup.c       |   12 +++++++++---
 arch/ia64/sn/pci/tioca_provider.c |    2 +-
 include/asm-ia64/sn/sn_sal.h      |   10 ++++++++++
 5 files changed, 22 insertions(+), 6 deletions(-)

Aaron Young:
      [IA64-SGI] fix prom revision checks in SN kernel

Jack Steiner:
      [IA64-SGI] - Pass OS logical cpu number to the SN prom (bios)

Tony Luck:
      [IA64] palinfo.c: s/register_cpu_notifier/register_hotcpu_notifier/
      [IA64] tiger_defconfig s/NR_CPUS=4/NR_CPUS\x16/

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (63 preceding siblings ...)
  2006-06-28 19:03 ` Luck, Tony
@ 2006-08-03 19:18 ` Luck, Tony
  2006-08-04 18:20 ` Luck, Tony
                   ` (72 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-08-03 19:18 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/hp/sim/simscsi.c        |    4 +-
 arch/ia64/kernel/efi.c            |    6 +--
 arch/ia64/kernel/head.S           |    2 -
 arch/ia64/kernel/ia64_ksyms.c     |    2 -
 arch/ia64/kernel/pal.S            |   18 +++++-----
 arch/ia64/kernel/palinfo.c        |   34 +++++++------------
 arch/ia64/lib/Makefile            |    2 -
 arch/ia64/mm/contig.c             |   16 ++++++--
 arch/ia64/mm/discontig.c          |   68 ++------------------------------------
 arch/ia64/mm/init.c               |   55 ++++++++++++++++++++++++++++++
 arch/ia64/mm/ioremap.c            |    6 +--
 arch/ia64/sn/kernel/xpc_main.c    |    2 -
 arch/ia64/sn/pci/tioce_provider.c |    6 +--
 drivers/char/snsc.c               |    7 +++
 include/asm-ia64/meminit.h        |    7 +++
 include/asm-ia64/pal.h            |    7 +++
 include/asm-ia64/sn/xpc.h         |    4 +-
 include/asm-ia64/system.h         |    2 -
 18 files changed, 128 insertions(+), 120 deletions(-)

Bob Picco:
      [IA64] align high endpoint of VIRTUAL_MEM_MAP
      [IA64] fix show_mem for VIRTUAL_MEM_MAP+FLATMEM

Greg Edwards:
      [IA64] add platform check to snsc driver init

Keith Owens:
      [IA64] sparse cleanups

Matthew Wilcox:
      [IA64] Format /proc/pal/*/version_info correctly

Prarit Bhargava:
      Fix RAID5 + IA64 compile

Tony Luck:
      [IA64] Fix breakage in simscsi.c

Zou Nan hai:
      [IA64] Do not assume output registers be reservered.
      [IA64] Don't alloc empty frame in ia64_switch_mode_phys

commit e44e41d0c832ebbda7311a1fe43584d844026357
Author: Bob Picco <bob.picco@hp.com>
Date:   Wed Jun 28 12:55:43 2006 -0400

    [IA64] fix show_mem for VIRTUAL_MEM_MAP+FLATMEM
    
    contig.c (FLATMEM) requires the same optimization as in discontig.c for show_mem
    when VIRTUAL_MEM_MAP is in use. Otherwise FLATMEM has softlockup timeouts.
    This was boot tested for memory configuration: SPARSEMEM,
    DISCONTIG+VIRTUAL_MEM_MAP, FLATMEM, FLATMEM+VIRTUAL_MEM_MAP and
    FLATMEM+VIRTUAL_MEM_MAP with largest memory gap less than LARGE_GAP by
    using boot parameter "mem=".
    
    This was boot tested and "echo m >/proc/sysrq-trigger" output evaluated for
    : FLATMEM, FLATMEM+VIRTUAL_MEM_MAP, DISCONTIGMEM+VIRTUAL_MEM_MAP and
    SPARSEMEM.
    
    Signed-off-by: Bob Picco <bob.picco@hp.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/mm/contig.c b/arch/ia64/mm/contig.c
index 8919fed..e004143 100644
--- a/arch/ia64/mm/contig.c
+++ b/arch/ia64/mm/contig.c
@@ -27,6 +27,7 @@ #include <asm/mca.h>
 
 #ifdef CONFIG_VIRTUAL_MEM_MAP
 static unsigned long num_dma_physpages;
+static unsigned long max_gap;
 #endif
 
 /**
@@ -45,9 +46,15 @@ show_mem (void)
 
 	printk("Free swap:       %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10));
 	i = max_mapnr;
-	while (i-- > 0) {
-		if (!pfn_valid(i))
+	for (i = 0; i < max_mapnr; i++) {
+		if (!pfn_valid(i)) {
+#ifdef CONFIG_VIRTUAL_MEM_MAP
+			if (max_gap < LARGE_GAP)
+				continue;
+			i = vmemmap_find_next_valid_pfn(0, i) - 1;
+#endif
 			continue;
+		}
 		total++;
 		if (PageReserved(mem_map+i))
 			reserved++;
@@ -234,7 +241,6 @@ paging_init (void)
 	unsigned long zones_size[MAX_NR_ZONES];
 #ifdef CONFIG_VIRTUAL_MEM_MAP
 	unsigned long zholes_size[MAX_NR_ZONES];
-	unsigned long max_gap;
 #endif
 
 	/* initialize mem_map[] */
@@ -266,7 +272,6 @@ #ifdef CONFIG_VIRTUAL_MEM_MAP
 		}
 	}
 
-	max_gap = 0;
 	efi_memmap_walk(find_largest_hole, (u64 *)&max_gap);
 	if (max_gap < LARGE_GAP) {
 		vmem_map = (struct page *) 0;
diff --git a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c
index 8eeb669..d260bff 100644
--- a/arch/ia64/mm/discontig.c
+++ b/arch/ia64/mm/discontig.c
@@ -534,68 +534,6 @@ void __cpuinit *per_cpu_init(void)
 }
 #endif /* CONFIG_SMP */
 
-#ifdef CONFIG_VIRTUAL_MEM_MAP
-static inline int find_next_valid_pfn_for_pgdat(pg_data_t *pgdat, int i)
-{
-	unsigned long end_address, hole_next_pfn;
-	unsigned long stop_address;
-
-	end_address = (unsigned long) &vmem_map[pgdat->node_start_pfn + i];
-	end_address = PAGE_ALIGN(end_address);
-
-	stop_address = (unsigned long) &vmem_map[
-		pgdat->node_start_pfn + pgdat->node_spanned_pages];
-
-	do {
-		pgd_t *pgd;
-		pud_t *pud;
-		pmd_t *pmd;
-		pte_t *pte;
-
-		pgd = pgd_offset_k(end_address);
-		if (pgd_none(*pgd)) {
-			end_address += PGDIR_SIZE;
-			continue;
-		}
-
-		pud = pud_offset(pgd, end_address);
-		if (pud_none(*pud)) {
-			end_address += PUD_SIZE;
-			continue;
-		}
-
-		pmd = pmd_offset(pud, end_address);
-		if (pmd_none(*pmd)) {
-			end_address += PMD_SIZE;
-			continue;
-		}
-
-		pte = pte_offset_kernel(pmd, end_address);
-retry_pte:
-		if (pte_none(*pte)) {
-			end_address += PAGE_SIZE;
-			pte++;
-			if ((end_address < stop_address) &&
-			    (end_address != ALIGN(end_address, 1UL << PMD_SHIFT)))
-				goto retry_pte;
-			continue;
-		}
-		/* Found next valid vmem_map page */
-		break;
-	} while (end_address < stop_address);
-
-	end_address = min(end_address, stop_address);
-	end_address = end_address - (unsigned long) vmem_map + sizeof(struct page) - 1;
-	hole_next_pfn = end_address / sizeof(struct page);
-	return hole_next_pfn - pgdat->node_start_pfn;
-}
-#else
-static inline int find_next_valid_pfn_for_pgdat(pg_data_t *pgdat, int i)
-{
-	return i + 1;
-}
-#endif
-
 /**
  * show_mem - give short summary of memory stats
  *
@@ -625,7 +563,8 @@ void show_mem(void)
 			if (pfn_valid(pgdat->node_start_pfn + i))
 				page = pfn_to_page(pgdat->node_start_pfn + i);
 			else {
-				i = find_next_valid_pfn_for_pgdat(pgdat, i) - 1;
+				i = vmemmap_find_next_valid_pfn(pgdat->node_id,
+					 i) - 1;
 				continue;
 			}
 			if (PageReserved(page))
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c
index 2f50c06..30617cc 100644
--- a/arch/ia64/mm/init.c
+++ b/arch/ia64/mm/init.c
@@ -415,6 +415,61 @@ #endif
 }
 
 #ifdef CONFIG_VIRTUAL_MEM_MAP
+int vmemmap_find_next_valid_pfn(int node, int i)
+{
+	unsigned long end_address, hole_next_pfn;
+	unsigned long stop_address;
+	pg_data_t *pgdat = NODE_DATA(node);
+
+	end_address = (unsigned long) &vmem_map[pgdat->node_start_pfn + i];
+	end_address = PAGE_ALIGN(end_address);
+
+	stop_address = (unsigned long) &vmem_map[
+		pgdat->node_start_pfn + pgdat->node_spanned_pages];
+
+	do {
+		pgd_t *pgd;
+		pud_t *pud;
+		pmd_t *pmd;
+		pte_t *pte;
+
+		pgd = pgd_offset_k(end_address);
+		if (pgd_none(*pgd)) {
+			end_address += PGDIR_SIZE;
+			continue;
+		}
+
+		pud = pud_offset(pgd, end_address);
+		if (pud_none(*pud)) {
+			end_address += PUD_SIZE;
+			continue;
+		}
+
+		pmd = pmd_offset(pud, end_address);
+		if (pmd_none(*pmd)) {
+			end_address += PMD_SIZE;
+			continue;
+		}
+
+		pte = pte_offset_kernel(pmd, end_address);
+retry_pte:
+		if (pte_none(*pte)) {
+			end_address += PAGE_SIZE;
+			pte++;
+			if ((end_address < stop_address) &&
+			    (end_address != ALIGN(end_address, 1UL << PMD_SHIFT)))
+				goto retry_pte;
+			continue;
+		}
+		/* Found next valid vmem_map page */
+		break;
+	} while (end_address < stop_address);
+
+	end_address = min(end_address, stop_address);
+	end_address = end_address - (unsigned long) vmem_map + sizeof(struct page) - 1;
+	hole_next_pfn = end_address / sizeof(struct page);
+	return hole_next_pfn - pgdat->node_start_pfn;
+}
 
 int __init
 create_mem_map_page_table (u64 start, u64 end, void *arg)
diff --git a/include/asm-ia64/meminit.h b/include/asm-ia64/meminit.h
index 894bc4d..6a33a07 100644
--- a/include/asm-ia64/meminit.h
+++ b/include/asm-ia64/meminit.h
@@ -56,6 +56,11 @@ # define LARGE_GAP	0x40000000 /* Use vir
   extern struct page *vmem_map;
   extern int find_largest_hole (u64 start, u64 end, void *arg);
   extern int create_mem_map_page_table (u64 start, u64 end, void *arg);
+  extern int vmemmap_find_next_valid_pfn(int, int);
+#else
+static inline int vmemmap_find_next_valid_pfn(int node, int i)
+{
+	return i + 1;
+}
 #endif
-
 #endif /* meminit_h */

commit 921eea1cdf6ce7f0db88e4579474a04b1fb0fe6d
Author: Bob Picco <bob.picco@hp.com>
Date:   Wed Jun 28 12:54:55 2006 -0400

    [IA64] align high endpoint of VIRTUAL_MEM_MAP
    
    Assure that vmem_map's high endpoint is MAX_ORDER aligned. Not doing so violates
    the buddy allocator algorithm. Also anyone using mem=XXX on boot line and
    not aligned to MAX_ORDER requires this patch in order to satisfy buddy
    allocator. vmem_map always starts at pfn 0. The potentially large MAX_ORDER
    on ia64 (due to hugetlbfs) requires that the end of vmem_map be aligned
    to MAX_ORDER_NR_PAGES.
    
    This was boot tested for: FLATMEM, FLATMEM+VIRTUAL_MEM_MAP,
    DISCONTIGMEM+VIRTUAL_MEM_MAP and SPARSEMEM.
    
    Signed-off-by: Bob Picco <bob.picco@hp.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/mm/contig.c b/arch/ia64/mm/contig.c
index 2a88cdd..8919fed 100644
--- a/arch/ia64/mm/contig.c
+++ b/arch/ia64/mm/contig.c
@@ -277,7 +277,8 @@ #ifdef CONFIG_VIRTUAL_MEM_MAP
 
 		/* allocate virtual_mem_map */
 
-		map_size = PAGE_ALIGN(max_low_pfn * sizeof(struct page));
+		map_size = PAGE_ALIGN(ALIGN(max_low_pfn, MAX_ORDER_NR_PAGES) *
+			sizeof(struct page));
 		vmalloc_end -= map_size;
 		vmem_map = (struct page *) vmalloc_end;
 		efi_memmap_walk(create_mem_map_page_table, NULL);
diff --git a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c
index 99bd9e3..8eeb669 100644
--- a/arch/ia64/mm/discontig.c
+++ b/arch/ia64/mm/discontig.c
@@ -751,7 +751,8 @@ void __init paging_init(void)
 	efi_memmap_walk(filter_rsvd_memory, count_node_pages);
 
 #ifdef CONFIG_VIRTUAL_MEM_MAP
-	vmalloc_end -= PAGE_ALIGN(max_low_pfn * sizeof(struct page));
+	vmalloc_end -= PAGE_ALIGN(ALIGN(max_low_pfn, MAX_ORDER_NR_PAGES) *
+		sizeof(struct page));
 	vmem_map = (struct page *) vmalloc_end;
 	efi_memmap_walk(create_mem_map_page_table, NULL);
 	printk("Virtual mem_map starts at 0x%p\n", vmem_map);

commit 0a69ca91be2b36f99a48daacd1f12d9d49ecaf87
Author: Prarit Bhargava <prarit@redhat.com>
Date:   Mon Jul 31 09:12:11 2006 -0400

    [PATCH] Fix RAID5 + IA64 compile
    
    CONFIG_MD_RAID5 became CONFIG_MD_RAID456 in drivers/md/Kconfig.  Make
    the same change in arch/ia64
    
    Signed-off-by: Prarit Bhargava <prarit@redhat.com>
    Signed-off-by: Aron Griffis <aron@hp.com>
    Acked-by: Jes Sorenson <jes@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/ia64_ksyms.c b/arch/ia64/kernel/ia64_ksyms.c
index b7cf651..3ead20f 100644
--- a/arch/ia64/kernel/ia64_ksyms.c
+++ b/arch/ia64/kernel/ia64_ksyms.c
@@ -62,7 +62,7 @@ EXPORT_SYMBOL(__udivdi3);
 EXPORT_SYMBOL(__moddi3);
 EXPORT_SYMBOL(__umoddi3);
 
-#if defined(CONFIG_MD_RAID5) || defined(CONFIG_MD_RAID5_MODULE)
+#if defined(CONFIG_MD_RAID456) || defined(CONFIG_MD_RAID456_MODULE)
 extern void xor_ia64_2(void);
 extern void xor_ia64_3(void);
 extern void xor_ia64_4(void);
diff --git a/arch/ia64/lib/Makefile b/arch/ia64/lib/Makefile
index d8536a2..38fa6e4 100644
--- a/arch/ia64/lib/Makefile
+++ b/arch/ia64/lib/Makefile
@@ -14,7 +14,7 @@ lib-y := __divsi3.o __udivsi3.o __modsi3
 lib-$(CONFIG_ITANIUM)	+= copy_page.o copy_user.o memcpy.o
 lib-$(CONFIG_MCKINLEY)	+= copy_page_mck.o memcpy_mck.o
 lib-$(CONFIG_PERFMON)	+= carta_random.o
-lib-$(CONFIG_MD_RAID5)	+= xor.o
+lib-$(CONFIG_MD_RAID456)	+= xor.o
 
 AFLAGS___divdi3.o	 AFLAGS___udivdi3.o	= -DUNSIGNED

commit e55ce456155813ca34e105d0e05306edad05cf6e
Author: Zou Nan hai <nanhai.zou@intel.com>
Date:   Wed Jul 26 07:36:40 2006 +0800

    [IA64] Don't alloc empty frame in ia64_switch_mode_phys
    
    I think ia64_switch_mode_phys and ia64_switch_mode_virt
    does not need to alloc an empty frame.
    An empty frame is required by loadrs but flushrs
    does not need that.
    
    Signed-off-by: Zou Nan hai <nanhai.zou@intel.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/head.S b/arch/ia64/kernel/head.S
index 561b8f1..29236f0 100644
--- a/arch/ia64/kernel/head.S
+++ b/arch/ia64/kernel/head.S
@@ -853,7 +853,6 @@ END(__ia64_init_fpu)
  */
 GLOBAL_ENTRY(ia64_switch_mode_phys)
  {
-	alloc r2=ar.pfs,0,0,0,0
 	rsm psr.i | psr.ic		// disable interrupts and interrupt collection
 	mov r15=ip
  }
@@ -902,7 +901,6 @@ END(ia64_switch_mode_phys)
  */
 GLOBAL_ENTRY(ia64_switch_mode_virt)
  {
-	alloc r2=ar.pfs,0,0,0,0
 	rsm psr.i | psr.ic		// disable interrupts and interrupt collection
 	mov r15=ip
  }

commit acb15c85de57d81d773b6e4184b7cb143ce83eba
Author: Zou Nan hai <nanhai.zou@intel.com>
Date:   Wed Jul 26 07:26:51 2006 +0800

    [IA64] Do not assume output registers be reservered.
    
    We found an issue in pal.S.
    
    According to the software runtime SPEC,
    The caller's output registers do not need to be preserved for
    caller. The callee may reuse input registers for any other
    purpose within the procedure.
    
    in ia64_pal_call_phys_stacked,
    
    input registers are copied to output registers before call
    into ia64_switch_mode_phys, then used to call into PAL. This
    assumes output registers are preserved in ia64_switch_mode_phys,
    which may not be true.
    
    In this particular case, ia64_switch_mode_phys alloc a null frame
    , and mask off psr.i.
    If an interrupt comes at this small window,
    or an MCA comes inside the procedure, output registers
    maybe changed,
    then the pal call may got some staled input registers.
    
    This patch moves the copies from input to output
    after ia64_switch_mode_phys to follow the software
    runtime convention.
    
    It  also removed some unused labels in
    ia64_pal_call_phys_stacked.
    
    Signed-off-by: Zou Nan hai <nanhai.zou@intel.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/pal.S b/arch/ia64/kernel/pal.S
index 5018c7f..ebaf1e6 100644
--- a/arch/ia64/kernel/pal.S
+++ b/arch/ia64/kernel/pal.S
@@ -217,12 +217,7 @@ GLOBAL_ENTRY(ia64_pal_call_phys_stacked)
 	.body
 	;;
 	ld8 loc2 = [loc2]		// loc2 <- entry point
-	mov out0 = in0		// first argument
-	mov out1 = in1		// copy arg2
-	mov out2 = in2		// copy arg3
-	mov out3 = in3		// copy arg3
-	;;
-	mov loc3 = psr		// save psr
+	mov loc3 = psr			// save psr
 	;;
 	mov loc4=ar.rsc			// save RSE configuration
 	dep.z loc2=loc2,0,61		// convert pal entry point to physical
@@ -236,18 +231,23 @@ GLOBAL_ENTRY(ia64_pal_call_phys_stacked)
 	;;
 	andcm r16=loc3,r16		// removes bits to clear from psr
 	br.call.sptk.many rp=ia64_switch_mode_phys
-.ret6:
+
+	mov out0 = in0			// first argument
+	mov out1 = in1			// copy arg2
+	mov out2 = in2			// copy arg3
+	mov out3 = in3			// copy arg3
 	mov loc5 = r19
 	mov loc6 = r20
+
 	br.call.sptk.many rp·		// now make the call
-.ret7:
+
 	mov ar.rsc=0			// put RSE in enforced lazy, LE mode
 	mov r16=loc3			// r16= original psr
 	mov r19=loc5
 	mov r20=loc6
 	br.call.sptk.many rp=ia64_switch_mode_virt	// return to virtual mode
 
-.ret8:	mov psr.l  = loc3		// restore init PSR
+	mov psr.l  = loc3		// restore init PSR
 	mov ar.pfs = loc1
 	mov rp = loc0
 	;;

commit c7c17423b9ea3c5559cfb480a00844f1df9eed06
Author: Greg Edwards <edwardsg@sgi.com>
Date:   Fri Jul 28 10:03:55 2006 -0500

    [IA64] add platform check to snsc driver init
    
    Add a platform check to the snsc driver init function, to prevent
    loading on non-sn2 systems.
    
    Signed-off-by: Greg Edwards <edwardsg@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/drivers/char/snsc.c b/drivers/char/snsc.c
index afc6eda..07e0b75 100644
--- a/drivers/char/snsc.c
+++ b/drivers/char/snsc.c
@@ -374,7 +374,12 @@ scdrv_init(void)
 	struct sysctl_data_s *scd;
 	void *salbuf;
 	dev_t first_dev, dev;
-	nasid_t event_nasid = ia64_sn_get_console_nasid();
+	nasid_t event_nasid;
+
+	if (!ia64_platform_is("sn2"))
+		return -ENODEV;
+
+	event_nasid = ia64_sn_get_console_nasid();
 
 	if (alloc_chrdev_region(&first_dev, 0, num_cnodes,
 				SYSCTL_BASENAME) < 0) {

commit e037cda559547e6353c5a792802963572d0b750e
Author: Keith Owens <kaos@sgi.com>
Date:   Mon Jul 17 15:41:59 2006 +1000

    [IA64] sparse cleanups
    
    Fix some sparse warnings on ia64.  Large constants that should be long
    instead of int.  Use NULL instead of 0.  Add some missing __iomem
    casts.  Replace a non-C99 structure assignment.
    
    Signed-off-by: Keith Owens <kaos@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c
index e4bfa9d..bb8770a 100644
--- a/arch/ia64/kernel/efi.c
+++ b/arch/ia64/kernel/efi.c
@@ -632,7 +632,7 @@ kern_memory_descriptor (unsigned long ph
 		if (phys_addr - md->start < (md->num_pages << EFI_PAGE_SHIFT))
 			 return md;
 	}
-	return 0;
+	return NULL;
 }
 
 static efi_memory_desc_t *
@@ -652,7 +652,7 @@ efi_memory_descriptor (unsigned long phy
 		if (phys_addr - md->phys_addr < (md->num_pages << EFI_PAGE_SHIFT))
 			 return md;
 	}
-	return 0;
+	return NULL;
 }
 
 u32
@@ -923,7 +923,7 @@ find_memmap_space (void)
 void
 efi_memmap_init(unsigned long *s, unsigned long *e)
 {
-	struct kern_memdesc *k, *prev = 0;
+	struct kern_memdesc *k, *prev = NULL;
 	u64	contig_low=0, contig_high=0;
 	u64	as, ae, lim;
 	void *efi_map_start, *efi_map_end, *p, *q;
diff --git a/arch/ia64/mm/ioremap.c b/arch/ia64/mm/ioremap.c
index 07bd02b..4280c07 100644
--- a/arch/ia64/mm/ioremap.c
+++ b/arch/ia64/mm/ioremap.c
@@ -32,7 +32,7 @@ ioremap (unsigned long offset, unsigned 
 	 */
 	attr = kern_mem_attribute(offset, size);
 	if (attr & EFI_MEMORY_WB)
-		return phys_to_virt(offset);
+		return (void __iomem *) phys_to_virt(offset);
 	else if (attr & EFI_MEMORY_UC)
 		return __ioremap(offset, size);
 
@@ -43,7 +43,7 @@ ioremap (unsigned long offset, unsigned 
 	gran_base = GRANULEROUNDDOWN(offset);
 	gran_size = GRANULEROUNDUP(offset + size) - gran_base;
 	if (efi_mem_attribute(gran_base, gran_size) & EFI_MEMORY_WB)
-		return phys_to_virt(offset);
+		return (void __iomem *) phys_to_virt(offset);
 
 	return __ioremap(offset, size);
 }
@@ -53,7 +53,7 @@ void __iomem *
 ioremap_nocache (unsigned long offset, unsigned long size)
 {
 	if (kern_mem_attribute(offset, size) & EFI_MEMORY_WB)
-		return 0;
+		return NULL;
 
 	return __ioremap(offset, size);
 }
diff --git a/arch/ia64/sn/kernel/xpc_main.c b/arch/ia64/sn/kernel/xpc_main.c
index 99b123a..5e8e59e 100644
--- a/arch/ia64/sn/kernel/xpc_main.c
+++ b/arch/ia64/sn/kernel/xpc_main.c
@@ -480,7 +480,7 @@ xpc_activating(void *__partid)
 	partid_t partid = (u64) __partid;
 	struct xpc_partition *part = &xpc_partitions[partid];
 	unsigned long irq_flags;
-	struct sched_param param = { sched_priority: MAX_RT_PRIO - 1 };
+	struct sched_param param = { .sched_priority = MAX_RT_PRIO - 1 };
 	int ret;
 
 
diff --git a/arch/ia64/sn/pci/tioce_provider.c b/arch/ia64/sn/pci/tioce_provider.c
index 17cd342..af7171a 100644
--- a/arch/ia64/sn/pci/tioce_provider.c
+++ b/arch/ia64/sn/pci/tioce_provider.c
@@ -74,7 +74,7 @@ tioce_mmr_war_pre(struct tioce_kernel *k
 		else
 			mmr_war_offset = 0x158;
 
-		readq_relaxed((void *)(mmr_base + mmr_war_offset));
+		readq_relaxed((void __iomem *)(mmr_base + mmr_war_offset));
 	}
 }
 
@@ -92,8 +92,8 @@ tioce_mmr_war_post(struct tioce_kernel *
 
 	if (mmr_offset < 0x45000) {
 		if (mmr_offset = 0x100)
-			readq_relaxed((void *)(mmr_base + 0x38));
-		readq_relaxed((void *)(mmr_base + 0xb050));
+			readq_relaxed((void __iomem *)(mmr_base + 0x38));
+		readq_relaxed((void __iomem *)(mmr_base + 0xb050));
 	}
 }
 
diff --git a/include/asm-ia64/sn/xpc.h b/include/asm-ia64/sn/xpc.h
index 8406f1e..b72af59 100644
--- a/include/asm-ia64/sn/xpc.h
+++ b/include/asm-ia64/sn/xpc.h
@@ -1124,8 +1124,8 @@ #define	XPC_IPI_MSGREQUEST	0x10
 #define XPC_GET_IPI_FLAGS(_amo, _c)	((u8) (((_amo) >> ((_c) * 8)) & 0xff))
 #define XPC_SET_IPI_FLAGS(_amo, _c, _f)	(_amo) |= ((u64) (_f) << ((_c) * 8))
 
-#define	XPC_ANY_OPENCLOSE_IPI_FLAGS_SET(_amo) ((_amo) & 0x0f0f0f0f0f0f0f0f)
-#define XPC_ANY_MSG_IPI_FLAGS_SET(_amo)       ((_amo) & 0x1010101010101010)
+#define	XPC_ANY_OPENCLOSE_IPI_FLAGS_SET(_amo) ((_amo) & __IA64_UL_CONST(0x0f0f0f0f0f0f0f0f))
+#define XPC_ANY_MSG_IPI_FLAGS_SET(_amo)       ((_amo) & __IA64_UL_CONST(0x1010101010101010))
 
 
 static inline void
diff --git a/include/asm-ia64/system.h b/include/asm-ia64/system.h
index fc9677b..384fbf7 100644
--- a/include/asm-ia64/system.h
+++ b/include/asm-ia64/system.h
@@ -24,7 +24,7 @@ #define GATE_ADDR		RGN_BASE(RGN_GATE)
  * 0xa000000000000000+2*PERCPU_PAGE_SIZE
  * - 0xa000000000000000+3*PERCPU_PAGE_SIZE remain unmapped (guard page)
  */
-#define KERNEL_START		 (GATE_ADDR+0x100000000)
+#define KERNEL_START		 (GATE_ADDR+__IA64_UL_CONST(0x100000000))
 #define PERCPU_ADDR		(-PERCPU_PAGE_SIZE)
 
 #ifndef __ASSEMBLY__

commit 4f2ef124b274baac80f64e290aa44e87a7753933
Author: Tony Luck <tony.luck@intel.com>
Date:   Fri Jul 28 13:20:23 2006 -0700

    [IA64] Fix breakage in simscsi.c
    
    arch/ia64/hp/sim/simscsi.c: In function `simscsi_sg_readwrite':
    arch/ia64/hp/sim/simscsi.c:154: error: structure has no member named `buffer'
    arch/ia64/hp/sim/simscsi.c: In function `simscsi_fillresult':
    arch/ia64/hp/sim/simscsi.c:247: error: structure has no member named `buffer'
    
    hch said:
    >Just change it to access the request_buffer member instead.  buffer
    >and request_buffer have been synonymous 99% of the time, and a driver
    >never even wants to access buffer.
    
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/hp/sim/simscsi.c b/arch/ia64/hp/sim/simscsi.c
index a3fe975..8a4f0d0 100644
--- a/arch/ia64/hp/sim/simscsi.c
+++ b/arch/ia64/hp/sim/simscsi.c
@@ -151,7 +151,7 @@ static void
 simscsi_sg_readwrite (struct scsi_cmnd *sc, int mode, unsigned long offset)
 {
 	int list_len = sc->use_sg;
-	struct scatterlist *sl = (struct scatterlist *)sc->buffer;
+	struct scatterlist *sl = (struct scatterlist *)sc->request_buffer;
 	struct disk_stat stat;
 	struct disk_req req;
 
@@ -244,7 +244,7 @@ static void simscsi_fillresult(struct sc
 
 	if (scatterlen = 0)
 		memcpy(sc->request_buffer, buf, len);
-	else for (slp = (struct scatterlist *)sc->buffer; scatterlen-- > 0 && len > 0; slp++) {
+	else for (slp = (struct scatterlist *)sc->request_buffer; scatterlen-- > 0 && len > 0; slp++) {
 		unsigned thislen = min(len, slp->length);
 
 		memcpy(page_address(slp->page) + slp->offset, buf, thislen);

commit 1bf1eba74ec14bc10966a8ddb23bc8deeb91facd
Author: Matthew Wilcox <matthew@wil.cx>
Date:   Fri Jun 23 13:15:55 2006 -0600

    [IA64] Format /proc/pal/*/version_info correctly
    
    /proc/pal/*/version_info is a bit confusing.  HP firmware, at least,
    reports 07.31 instead of 0.7.31.  Also, the comment is out of place;
    it's an internal detail about the implementation of ia64_pal_version.
    Since the 2.2 revision of the SDM still states that PAL_VERSION can
    be called in virtual mode, correct the comment to be more accurate.
    
    Signed-off-by: Matthew Wilcox <matthew@wil.cx>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/palinfo.c b/arch/ia64/kernel/palinfo.c
index 3f5bac5..ce9f199 100644
--- a/arch/ia64/kernel/palinfo.c
+++ b/arch/ia64/kernel/palinfo.c
@@ -566,29 +566,23 @@ version_info(char *page)
 	pal_version_u_t min_ver, cur_ver;
 	char *p = page;
 
-	/* The PAL_VERSION call is advertised as being able to support
-	 * both physical and virtual mode calls. This seems to be a documentation
-	 * bug rather than firmware bug. In fact, it does only support physical mode.
-	 * So now the code reflects this fact and the pal_version() has been updated
-	 * accordingly.
-	 */
-	if (ia64_pal_version(&min_ver, &cur_ver) != 0) return 0;
+	if (ia64_pal_version(&min_ver, &cur_ver) != 0)
+		return 0;
 
 	p += sprintf(p,
 		     "PAL_vendor : 0x%02x (min=0x%02x)\n"
-		     "PAL_A      : %x.%x.%x (min=%x.%x.%x)\n"
-		     "PAL_B      : %x.%x.%x (min=%x.%x.%x)\n",
-		     cur_ver.pal_version_s.pv_pal_vendor, min_ver.pal_version_s.pv_pal_vendor,
-
-		     cur_ver.pal_version_s.pv_pal_a_model>>4,
-		     cur_ver.pal_version_s.pv_pal_a_model&0xf, cur_ver.pal_version_s.pv_pal_a_rev,
-		     min_ver.pal_version_s.pv_pal_a_model>>4,
-		     min_ver.pal_version_s.pv_pal_a_model&0xf, min_ver.pal_version_s.pv_pal_a_rev,
-
-		     cur_ver.pal_version_s.pv_pal_b_model>>4,
-		     cur_ver.pal_version_s.pv_pal_b_model&0xf, cur_ver.pal_version_s.pv_pal_b_rev,
-		     min_ver.pal_version_s.pv_pal_b_model>>4,
-		     min_ver.pal_version_s.pv_pal_b_model&0xf, min_ver.pal_version_s.pv_pal_b_rev);
+		     "PAL_A      : %02x.%02x (min=%02x.%02x)\n"
+		     "PAL_B      : %02x.%02x (min=%02x.%02x)\n",
+		     cur_ver.pal_version_s.pv_pal_vendor,
+		     min_ver.pal_version_s.pv_pal_vendor,
+		     cur_ver.pal_version_s.pv_pal_a_model,
+		     cur_ver.pal_version_s.pv_pal_a_rev,
+		     min_ver.pal_version_s.pv_pal_a_model,
+		     min_ver.pal_version_s.pv_pal_a_rev,
+		     cur_ver.pal_version_s.pv_pal_b_model,
+		     cur_ver.pal_version_s.pv_pal_b_rev,
+		     min_ver.pal_version_s.pv_pal_b_model,
+		     min_ver.pal_version_s.pv_pal_b_rev);
 	return p - page;
 }
 
diff --git a/include/asm-ia64/pal.h b/include/asm-ia64/pal.h
index 37e52a2..20a8d61 100644
--- a/include/asm-ia64/pal.h
+++ b/include/asm-ia64/pal.h
@@ -1433,7 +1433,12 @@ typedef union  pal_version_u {
 } pal_version_u_t;
 
 
-/* Return PAL version information */
+/*
+ * Return PAL version information.  While the documentation states that
+ * PAL_VERSION can be called in either physical or virtual mode, some
+ * implementations only allow physical calls.  We don't call it very often,
+ * so the overhead isn't worth eliminating.
+ */
 static inline s64
 ia64_pal_version (pal_version_u_t *pal_min_version, pal_version_u_t *pal_cur_version)
 {

^ permalink raw reply related	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (64 preceding siblings ...)
  2006-08-03 19:18 ` Luck, Tony
@ 2006-08-04 18:20 ` Luck, Tony
  2006-08-29 17:39 ` Luck, Tony
                   ` (71 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-08-04 18:20 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

I missed one patch that I meant to include in the batch yesterday.

Please pull (again) from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the file shown below.

Thanks!

-Tony

 arch/ia64/kernel/uncached.c |   86 +++++++++++++++++++++++++++++---------------
 1 files changed, 57 insertions(+), 29 deletions(-)

Dean Nelson:
      [IA64] make uncached allocator more node aware

commit eca7994f60eb6550d9e9b36d3b641a5a0e18a7c1
Author: Dean Nelson <dcn@sgi.com>
Date:   Wed Jun 28 13:50:09 2006 -0500

    [IA64] make uncached allocator more node aware
    
    The uncached allocator has a function, uncached_get_new_chunk(), that needs
    to be serialized on a per node basis. It also has a global variable,
    allocated_granules, which should be defined on a per node basis and protected
    by that serialization. Additionally, all error returns from functions called
    (like ia64_pal_mc_drain()) should be handled appropriately.
    
    Signed-off-by: Dean Nelson <dcn@sgi.com>
    Acked-by: Jes Sorenson <jes@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/uncached.c b/arch/ia64/kernel/uncached.c
index 5f03b9e..4c73a67 100644
--- a/arch/ia64/kernel/uncached.c
+++ b/arch/ia64/kernel/uncached.c
@@ -32,32 +32,38 @@ #include <asm/sn/arch.h>
 
 extern void __init efi_memmap_walk_uc(efi_freemem_callback_t, void *);
 
-#define MAX_UNCACHED_GRANULES	5
-static int allocated_granules;
+struct uncached_pool {
+	struct gen_pool *pool;
+	struct mutex add_chunk_mutex;	/* serialize adding a converted chunk */
+	int nchunks_added;		/* #of converted chunks added to pool */
+	atomic_t status;		/* smp called function's return status*/
+};
+
+#define MAX_CONVERTED_CHUNKS_PER_NODE	2
 
-struct gen_pool *uncached_pool[MAX_NUMNODES];
+struct uncached_pool uncached_pools[MAX_NUMNODES];
 
 
 static void uncached_ipi_visibility(void *data)
 {
 	int status;
+	struct uncached_pool *uc_pool = (struct uncached_pool *)data;
 
 	status = ia64_pal_prefetch_visibility(PAL_VISIBILITY_PHYSICAL);
 	if ((status != PAL_VISIBILITY_OK) &&
 	    (status != PAL_VISIBILITY_OK_REMOTE_NEEDED))
-		printk(KERN_DEBUG "pal_prefetch_visibility() returns %i on "
-		       "CPU %i\n", status, raw_smp_processor_id());
+		atomic_inc(&uc_pool->status);
 }
 
 
 static void uncached_ipi_mc_drain(void *data)
 {
 	int status;
+	struct uncached_pool *uc_pool = (struct uncached_pool *)data;
 
 	status = ia64_pal_mc_drain();
-	if (status)
-		printk(KERN_WARNING "ia64_pal_mc_drain() failed with %i on "
-		       "CPU %i\n", status, raw_smp_processor_id());
+	if (status != PAL_STATUS_SUCCESS)
+		atomic_inc(&uc_pool->status);
 }
 
 
@@ -70,21 +76,34 @@ static void uncached_ipi_mc_drain(void *
  * This is accomplished by first allocating a granule of cached memory pages
  * and then converting them to uncached memory pages.
  */
-static int uncached_add_chunk(struct gen_pool *pool, int nid)
+static int uncached_add_chunk(struct uncached_pool *uc_pool, int nid)
 {
 	struct page *page;
-	int status, i;
+	int status, i, nchunks_added = uc_pool->nchunks_added;
 	unsigned long c_addr, uc_addr;
 
-	if (allocated_granules >= MAX_UNCACHED_GRANULES)
+	if (mutex_lock_interruptible(&uc_pool->add_chunk_mutex) != 0)
+		return -1;	/* interrupted by a signal */
+
+	if (uc_pool->nchunks_added > nchunks_added) {
+		/* someone added a new chunk while we were waiting */
+		mutex_unlock(&uc_pool->add_chunk_mutex);
+		return 0;
+	}
+
+	if (uc_pool->nchunks_added >= MAX_CONVERTED_CHUNKS_PER_NODE) {
+		mutex_unlock(&uc_pool->add_chunk_mutex);
 		return -1;
+	}
 
 	/* attempt to allocate a granule's worth of cached memory pages */
 
 	page = alloc_pages_node(nid, GFP_KERNEL | __GFP_ZERO,
 				IA64_GRANULE_SHIFT-PAGE_SHIFT);
-	if (!page)
+	if (!page) {
+		mutex_unlock(&uc_pool->add_chunk_mutex);
 		return -1;
+	}
 
 	/* convert the memory pages from cached to uncached */
 
@@ -102,11 +121,14 @@ static int uncached_add_chunk(struct gen
 	flush_tlb_kernel_range(uc_addr, uc_adddr + IA64_GRANULE_SIZE);
 
 	status = ia64_pal_prefetch_visibility(PAL_VISIBILITY_PHYSICAL);
-	if (!status) {
-		status = smp_call_function(uncached_ipi_visibility, NULL, 0, 1);
-		if (status)
+	if (status = PAL_VISIBILITY_OK_REMOTE_NEEDED) {
+		atomic_set(&uc_pool->status, 0);
+		status = smp_call_function(uncached_ipi_visibility, uc_pool,
+					   0, 1);
+		if (status || atomic_read(&uc_pool->status))
 			goto failed;
-	}
+	} else if (status != PAL_VISIBILITY_OK)
+		goto failed;
 
 	preempt_disable();
 
@@ -120,20 +142,24 @@ static int uncached_add_chunk(struct gen
 
 	preempt_enable();
 
-	ia64_pal_mc_drain();
-	status = smp_call_function(uncached_ipi_mc_drain, NULL, 0, 1);
-	if (status)
+	status = ia64_pal_mc_drain();
+	if (status != PAL_STATUS_SUCCESS)
+		goto failed;
+	atomic_set(&uc_pool->status, 0);
+	status = smp_call_function(uncached_ipi_mc_drain, uc_pool, 0, 1);
+	if (status || atomic_read(&uc_pool->status))
 		goto failed;
 
 	/*
 	 * The chunk of memory pages has been converted to uncached so now we
 	 * can add it to the pool.
 	 */
-	status = gen_pool_add(pool, uc_addr, IA64_GRANULE_SIZE, nid);
+	status = gen_pool_add(uc_pool->pool, uc_addr, IA64_GRANULE_SIZE, nid);
 	if (status)
 		goto failed;
 
-	allocated_granules++;
+	uc_pool->nchunks_added++;
+	mutex_unlock(&uc_pool->add_chunk_mutex);
 	return 0;
 
 	/* failed to convert or add the chunk so give it back to the kernel */
@@ -142,6 +168,7 @@ failed:
 		ClearPageUncached(&page[i]);
 
 	free_pages(c_addr, IA64_GRANULE_SHIFT-PAGE_SHIFT);
+	mutex_unlock(&uc_pool->add_chunk_mutex);
 	return -1;
 }
 
@@ -158,7 +185,7 @@ failed:
 unsigned long uncached_alloc_page(int starting_nid)
 {
 	unsigned long uc_addr;
-	struct gen_pool *pool;
+	struct uncached_pool *uc_pool;
 	int nid;
 
 	if (unlikely(starting_nid >= MAX_NUMNODES))
@@ -171,14 +198,14 @@ unsigned long uncached_alloc_page(int st
 	do {
 		if (!node_online(nid))
 			continue;
-		pool = uncached_pool[nid];
-		if (pool = NULL)
+		uc_pool = &uncached_pools[nid];
+		if (uc_pool->pool = NULL)
 			continue;
 		do {
-			uc_addr = gen_pool_alloc(pool, PAGE_SIZE);
+			uc_addr = gen_pool_alloc(uc_pool->pool, PAGE_SIZE);
 			if (uc_addr != 0)
 				return uc_addr;
-		} while (uncached_add_chunk(pool, nid) = 0);
+		} while (uncached_add_chunk(uc_pool, nid) = 0);
 
 	} while ((nid = (nid + 1) % MAX_NUMNODES) != starting_nid);
 
@@ -197,7 +224,7 @@ EXPORT_SYMBOL(uncached_alloc_page);
 void uncached_free_page(unsigned long uc_addr)
 {
 	int nid = paddr_to_nid(uc_addr - __IA64_UNCACHED_OFFSET);
-	struct gen_pool *pool = uncached_pool[nid];
+	struct gen_pool *pool = uncached_pools[nid].pool;
 
 	if (unlikely(pool = NULL))
 		return;
@@ -224,7 +251,7 @@ static int __init uncached_build_memmap(
 					unsigned long uc_end, void *arg)
 {
 	int nid = paddr_to_nid(uc_start - __IA64_UNCACHED_OFFSET);
-	struct gen_pool *pool = uncached_pool[nid];
+	struct gen_pool *pool = uncached_pools[nid].pool;
 	size_t size = uc_end - uc_start;
 
 	touch_softlockup_watchdog();
@@ -242,7 +269,8 @@ static int __init uncached_init(void)
 	int nid;
 
 	for_each_online_node(nid) {
-		uncached_pool[nid] = gen_pool_create(PAGE_SHIFT, nid);
+		uncached_pools[nid].pool = gen_pool_create(PAGE_SHIFT, nid);
+		mutex_init(&uncached_pools[nid].add_chunk_mutex);
 	}
 
 	efi_memmap_walk_uc(uncached_build_memmap, NULL);

^ permalink raw reply related	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (65 preceding siblings ...)
  2006-08-04 18:20 ` Luck, Tony
@ 2006-08-29 17:39 ` Luck, Tony
  2006-09-08 19:11 ` Luck, Tony
                   ` (70 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-08-29 17:39 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/Kconfig                   |    4 ++--
 arch/ia64/kernel/topology.c         |    6 ++----
 arch/ia64/sn/kernel/xpc_channel.c   |    4 ++--
 arch/ia64/sn/kernel/xpc_main.c      |   28 ++++++++++++++++------------
 arch/ia64/sn/kernel/xpc_partition.c |   24 ++++++++----------------
 include/asm-ia64/sn/sn_sal.h        |    6 ------
 include/asm-ia64/sn/xp.h            |   22 ++++++++++++++++++----
 include/asm-ia64/sn/xpc.h           |    4 +++-
 8 files changed, 51 insertions(+), 47 deletions(-)

Christoph Lameter:
      [IA64] Increase default nodes shift to 10, nr_cpus to 1024

Dean Nelson:
      [IA64-SGI] Silent data corruption caused by XPC V2.

Paul Jackson:
      [IA64] panic if topology_init kzalloc fails

Russ Anderson:
      [IA64] remove redundant local_irq_save() calls from sn_sal.h

== Full git whatchanged -p output showing diffs =
commit c57d68caeed7bc335e6d35c951a9abae733a580b
Author: Christoph Lameter <clameter@sgi.com>
Date:   Tue Aug 22 19:43:27 2006 -0700

    [IA64] Increase default nodes shift to 10, nr_cpus to 1024
    
    Change both the NODES_SHIFT and the NR_CPUS so that even big machines
    can boot all nodes and processors with a generic kernel.
    
    Signed-off-by: Christoph Lameter <clameter@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
index 47de9ee..674de89 100644
--- a/arch/ia64/Kconfig
+++ b/arch/ia64/Kconfig
@@ -258,7 +258,7 @@ config NR_CPUS
 	int "Maximum number of CPUs (2-1024)"
 	range 2 1024
 	depends on SMP
-	default "64"
+	default "1024"
 	help
 	  You should set this to the number of CPUs in your system, but
 	  keep in mind that a kernel compiled for, e.g., 2 CPUs will boot but
@@ -354,7 +354,7 @@ config NUMA
 config NODES_SHIFT
 	int "Max num nodes shift(3-10)"
 	range 3 10
-	default "8"
+	default "10"
 	depends on NEED_MULTIPLE_NODES
 	help
 	  This option specifies the maximum number of nodes in your SSI system.

commit 986e12fa74c837d7fe5bdfe80666e2e2d46711bd
Author: Russ Anderson <rja@efs.americas.sgi.com>
Date:   Thu Aug 24 11:08:52 2006 -0500

    [IA64] remove redundant local_irq_save() calls from sn_sal.h
    
    sn_change_memprotect() does a local_irq_save() then calls
    ia64_sal_oemcall_nolock() which calls SAL_CALL_NOLOCK()
    which also does a local_irq_save().
    
    This patch removes the redundant local_irq_save() and local_irq_restore()
    calls in sn_change_memprotect() and sn_inject_error().
    
    Signed-off-by: Russ Anderson <rja@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/include/asm-ia64/sn/sn_sal.h b/include/asm-ia64/sn/sn_sal.h
index bd4452b..ba826b3 100644
--- a/include/asm-ia64/sn/sn_sal.h
+++ b/include/asm-ia64/sn/sn_sal.h
@@ -706,12 +706,9 @@ static inline int
 sn_change_memprotect(u64 paddr, u64 len, u64 perms, u64 *nasid_array)
 {
 	struct ia64_sal_retval ret_stuff;
-	unsigned long irq_flags;
 
-	local_irq_save(irq_flags);
 	ia64_sal_oemcall_nolock(&ret_stuff, SN_SAL_MEMPROTECT, paddr, len,
 				(u64)nasid_array, perms, 0, 0, 0);
-	local_irq_restore(irq_flags);
 	return ret_stuff.status;
 }
 #define SN_MEMPROT_ACCESS_CLASS_0		0x14a080
@@ -1143,12 +1140,9 @@ static inline int
 sn_inject_error(u64 paddr, u64 *data, u64 *ecc)
 {
 	struct ia64_sal_retval ret_stuff;
-	unsigned long irq_flags;
 
-	local_irq_save(irq_flags);
 	ia64_sal_oemcall_nolock(&ret_stuff, SN_SAL_INJECT_ERROR, paddr, (u64)data,
 				(u64)ecc, 0, 0, 0, 0);
-	local_irq_restore(irq_flags);
 	return ret_stuff.status;
 }
 

commit a813213d73bb29d6986c3e93669a9cd5f7984364
Author: Paul Jackson <pj@sgi.com>
Date:   Mon Aug 14 22:45:49 2006 -0700

    [IA64] panic if topology_init kzalloc fails
    
    There really is no sense trying to continue if the kzalloc of sysfs_cpus[]
    fails in ia64 topology_init.  The code calling into here doesn't check
    errors very well, and one ends up with a nonobvious boot failure that
    wastes peoples time debugging.
    
    See for example the lkml thread at:
      http://lkml.org/lkml/2006/3/2/215
    
    Since the system is totally dead when this kzalloc fails, not having yet
    even booted, might as well announce one's death boldly and plainly.
    
    Signed-off-by: Paul Jackson <pj@sgi.com>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/topology.c b/arch/ia64/kernel/topology.c
index d24fa39..f648c61 100644
--- a/arch/ia64/kernel/topology.c
+++ b/arch/ia64/kernel/topology.c
@@ -67,10 +67,8 @@ #ifdef CONFIG_NUMA
 #endif
 
 	sysfs_cpus = kzalloc(sizeof(struct ia64_cpu) * NR_CPUS, GFP_KERNEL);
-	if (!sysfs_cpus) {
-		err = -ENOMEM;
-		goto out;
-	}
+	if (!sysfs_cpus)
+		panic("kzalloc in topology_init failed - NR_CPUS too big?");
 
 	for_each_present_cpu(i) {
 		if((err = arch_register_cpu(i)))

commit 7682a4c624e0011b5f3e8dd3021dc54961260d97
Author: Dean Nelson <dcn@sgi.com>
Date:   Tue Aug 8 15:03:29 2006 -0500

    [IA64-SGI] Silent data corruption caused by XPC V2.
    
    Jack Steiner identified a problem where XPC can cause a silent
    data corruption.  On module load, the placement may cause the
    xpc_remote_copy_buffer to span two physical pages.  DMA transfers are
    done to the start virtual address translated to physical.
    
    This patch changes the buffer from a statically allocated buffer to a
    kmalloc'd buffer.  Dean Nelson reviewed this before posting.  I have
    tested it in the configuration that was showing the memory corruption
    and verified it works.  I also added a BUG_ON statement to help catch
    this if a similar situation is encountered.
    
    Signed-off-by: Robin Holt <holt@sgi.com>
    Signed-off-by: Dean Nelson <dcn@sgi.com>
    Signed-off-by: Jack Steiner <steiner@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/sn/kernel/xpc_channel.c b/arch/ia64/sn/kernel/xpc_channel.c
index c2f69f7..1f35408 100644
--- a/arch/ia64/sn/kernel/xpc_channel.c
+++ b/arch/ia64/sn/kernel/xpc_channel.c
@@ -279,8 +279,8 @@ xpc_pull_remote_cachelines(struct xpc_pa
 		return part->reason;
 	}
 
-	bte_ret = xp_bte_copy((u64) src, (u64) ia64_tpa((u64) dst),
-				(u64) cnt, (BTE_NORMAL | BTE_WACQUIRE), NULL);
+	bte_ret = xp_bte_copy((u64) src, (u64) dst, (u64) cnt,
+					(BTE_NORMAL | BTE_WACQUIRE), NULL);
 	if (bte_ret = BTE_SUCCESS) {
 		return xpcSuccess;
 	}
diff --git a/arch/ia64/sn/kernel/xpc_main.c b/arch/ia64/sn/kernel/xpc_main.c
index 5e8e59e..4d026f9 100644
--- a/arch/ia64/sn/kernel/xpc_main.c
+++ b/arch/ia64/sn/kernel/xpc_main.c
@@ -1052,6 +1052,8 @@ xpc_do_exit(enum xpc_retval reason)
 	if (xpc_sysctl) {
 		unregister_sysctl_table(xpc_sysctl);
 	}
+
+	kfree(xpc_remote_copy_buffer_base);
 }
 
 
@@ -1212,24 +1214,20 @@ xpc_init(void)
 	partid_t partid;
 	struct xpc_partition *part;
 	pid_t pid;
+	size_t buf_size;
 
 
 	if (!ia64_platform_is("sn2")) {
 		return -ENODEV;
 	}
 
-	/*
-	 * xpc_remote_copy_buffer is used as a temporary buffer for bte_copy'ng
-	 * various portions of a partition's reserved page. Its size is based
-	 * on the size of the reserved page header and part_nasids mask. So we
-	 * need to ensure that the other items will fit as well.
-	 */
-	if (XPC_RP_VARS_SIZE > XPC_RP_HEADER_SIZE + XP_NASID_MASK_BYTES) {
-		dev_err(xpc_part, "xpc_remote_copy_buffer is not big enough\n");
-		return -EPERM;
-	}
-	DBUG_ON((u64) xpc_remote_copy_buffer !-				L1_CACHE_ALIGN((u64) xpc_remote_copy_buffer));
+
+	buf_size = max(XPC_RP_VARS_SIZE,
+				XPC_RP_HEADER_SIZE + XP_NASID_MASK_BYTES);
+	xpc_remote_copy_buffer = xpc_kmalloc_cacheline_aligned(buf_size,
+				     GFP_KERNEL, &xpc_remote_copy_buffer_base);
+	if (xpc_remote_copy_buffer = NULL)
+		return -ENOMEM;
 
 	snprintf(xpc_part->bus_id, BUS_ID_SIZE, "part");
 	snprintf(xpc_chan->bus_id, BUS_ID_SIZE, "chan");
@@ -1293,6 +1291,8 @@ xpc_init(void)
 		if (xpc_sysctl) {
 			unregister_sysctl_table(xpc_sysctl);
 		}
+
+		kfree(xpc_remote_copy_buffer_base);
 		return -EBUSY;
 	}
 
@@ -1311,6 +1311,8 @@ xpc_init(void)
 		if (xpc_sysctl) {
 			unregister_sysctl_table(xpc_sysctl);
 		}
+
+		kfree(xpc_remote_copy_buffer_base);
 		return -EBUSY;
 	}
 
@@ -1362,6 +1364,8 @@ xpc_init(void)
 		if (xpc_sysctl) {
 			unregister_sysctl_table(xpc_sysctl);
 		}
+
+		kfree(xpc_remote_copy_buffer_base);
 		return -EBUSY;
 	}
 
diff --git a/arch/ia64/sn/kernel/xpc_partition.c b/arch/ia64/sn/kernel/xpc_partition.c
index 2a89cfc..57c723f 100644
--- a/arch/ia64/sn/kernel/xpc_partition.c
+++ b/arch/ia64/sn/kernel/xpc_partition.c
@@ -71,19 +71,15 @@ struct xpc_partition xpc_partitions[XP_M
  * Generic buffer used to store a local copy of portions of a remote
  * partition's reserved page (either its header and part_nasids mask,
  * or its vars).
- *
- * xpc_discovery runs only once and is a seperate thread that is
- * very likely going to be processing in parallel with receiving
- * interrupts.
  */
-char ____cacheline_aligned xpc_remote_copy_buffer[XPC_RP_HEADER_SIZE +
-							XP_NASID_MASK_BYTES];
+char *xpc_remote_copy_buffer;
+void *xpc_remote_copy_buffer_base;
 
 
 /*
  * Guarantee that the kmalloc'd memory is cacheline aligned.
  */
-static void *
+void *
 xpc_kmalloc_cacheline_aligned(size_t size, gfp_t flags, void **base)
 {
 	/* see if kmalloc will give us cachline aligned memory by default */
@@ -148,7 +144,7 @@ xpc_get_rsvd_page_pa(int nasid)
 			}
 		}
 
-		bte_res = xp_bte_copy(rp_pa, ia64_tpa(buf), buf_len,
+		bte_res = xp_bte_copy(rp_pa, buf, buf_len,
 					(BTE_NOTIFY | BTE_WACQUIRE), NULL);
 		if (bte_res != BTE_SUCCESS) {
 			dev_dbg(xpc_part, "xp_bte_copy failed %i\n", bte_res);
@@ -447,7 +443,7 @@ xpc_check_remote_hb(void)
 
 		/* pull the remote_hb cache line */
 		bres = xp_bte_copy(part->remote_vars_pa,
-					ia64_tpa((u64) remote_vars),
+					(u64) remote_vars,
 					XPC_RP_VARS_SIZE,
 					(BTE_NOTIFY | BTE_WACQUIRE), NULL);
 		if (bres != BTE_SUCCESS) {
@@ -498,8 +494,7 @@ xpc_get_remote_rp(int nasid, u64 *discov
 
 
 	/* pull over the reserved page header and part_nasids mask */
-
-	bres = xp_bte_copy(*remote_rp_pa, ia64_tpa((u64) remote_rp),
+	bres = xp_bte_copy(*remote_rp_pa, (u64) remote_rp,
 				XPC_RP_HEADER_SIZE + xp_nasid_mask_bytes,
 				(BTE_NOTIFY | BTE_WACQUIRE), NULL);
 	if (bres != BTE_SUCCESS) {
@@ -554,11 +549,8 @@ xpc_get_remote_vars(u64 remote_vars_pa, 
 		return xpcVarsNotSet;
 	}
 
-
 	/* pull over the cross partition variables */
-
-	bres = xp_bte_copy(remote_vars_pa, ia64_tpa((u64) remote_vars),
-				XPC_RP_VARS_SIZE,
+	bres = xp_bte_copy(remote_vars_pa, (u64) remote_vars, XPC_RP_VARS_SIZE,
 				(BTE_NOTIFY | BTE_WACQUIRE), NULL);
 	if (bres != BTE_SUCCESS) {
 		return xpc_map_bte_errors(bres);
@@ -1239,7 +1231,7 @@ xpc_initiate_partid_to_nasids(partid_t p
 
 	part_nasid_pa = (u64) XPC_RP_PART_NASIDS(part->remote_rp_pa);
 
-	bte_res = xp_bte_copy(part_nasid_pa, ia64_tpa((u64) nasid_mask),
+	bte_res = xp_bte_copy(part_nasid_pa, (u64) nasid_mask,
 			xp_nasid_mask_bytes, (BTE_NOTIFY | BTE_WACQUIRE), NULL);
 
 	return xpc_map_bte_errors(bte_res);
diff --git a/include/asm-ia64/sn/xp.h b/include/asm-ia64/sn/xp.h
index 9bd2f9b..6f807e0 100644
--- a/include/asm-ia64/sn/xp.h
+++ b/include/asm-ia64/sn/xp.h
@@ -60,23 +60,37 @@ #define XP_NASID_MASK_WORDS	((XP_MAX_PHY
  * the bte_copy() once in the hope that the failure was due to a temporary
  * aberration (i.e., the link going down temporarily).
  *
- * See bte_copy for definition of the input parameters.
+ * 	src - physical address of the source of the transfer.
+ *	vdst - virtual address of the destination of the transfer.
+ *	len - number of bytes to transfer from source to destination.
+ *	mode - see bte_copy() for definition.
+ *	notification - see bte_copy() for definition.
  *
  * Note: xp_bte_copy() should never be called while holding a spinlock.
  */
 static inline bte_result_t
-xp_bte_copy(u64 src, u64 dest, u64 len, u64 mode, void *notification)
+xp_bte_copy(u64 src, u64 vdst, u64 len, u64 mode, void *notification)
 {
 	bte_result_t ret;
+	u64 pdst = ia64_tpa(vdst);
 
 
-	ret = bte_copy(src, dest, len, mode, notification);
+	/*
+	 * Ensure that the physically mapped memory is contiguous.
+	 *
+	 * We do this by ensuring that the memory is from region 7 only.
+	 * If the need should arise to use memory from one of the other
+	 * regions, then modify the BUG_ON() statement to ensure that the
+	 * memory from that region is always physically contiguous.
+	 */
+	BUG_ON(REGION_NUMBER(vdst) != RGN_KERNEL);
 
+	ret = bte_copy(src, pdst, len, mode, notification);
 	if (ret != BTE_SUCCESS) {
 		if (!in_interrupt()) {
 			cond_resched();
 		}
-		ret = bte_copy(src, dest, len, mode, notification);
+		ret = bte_copy(src, pdst, len, mode, notification);
 	}
 
 	return ret;
diff --git a/include/asm-ia64/sn/xpc.h b/include/asm-ia64/sn/xpc.h
index b72af59..35e1386 100644
--- a/include/asm-ia64/sn/xpc.h
+++ b/include/asm-ia64/sn/xpc.h
@@ -683,7 +683,9 @@ extern struct xpc_vars *xpc_vars;
 extern struct xpc_rsvd_page *xpc_rsvd_page;
 extern struct xpc_vars_part *xpc_vars_part;
 extern struct xpc_partition xpc_partitions[XP_MAX_PARTITIONS + 1];
-extern char xpc_remote_copy_buffer[];
+extern char *xpc_remote_copy_buffer;
+extern void *xpc_remote_copy_buffer_base;
+extern void *xpc_kmalloc_cacheline_aligned(size_t, gfp_t, void **);
 extern struct xpc_rsvd_page *xpc_rsvd_page_init(void);
 extern void xpc_allow_IPI_ops(void);
 extern void xpc_restrict_IPI_ops(void);

^ permalink raw reply related	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (66 preceding siblings ...)
  2006-08-29 17:39 ` Luck, Tony
@ 2006-09-08 19:11 ` Luck, Tony
  2006-09-27  0:15 ` Luck, Tony
                   ` (69 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-09-08 19:11 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/kernel/entry.S    |    4 ++--
 arch/ia64/kernel/head.S     |    5 +++++
 arch/ia64/kernel/perfmon.c  |    4 +++-
 arch/ia64/sn/kernel/setup.c |    2 +-
 include/asm-ia64/unistd.h   |    3 +--
 5 files changed, 12 insertions(+), 6 deletions(-)

Andreas Schwab:
      [IA64] Unwire set/get_robust_list

Jack Steiner:
      [IA64] Save register stack contents on cpu start
      [IA64] SN fix for cpu hotplug/kexec

Stephane Eranian:
      [IA64] correct file descriptor reference counting in perfmon

--- full git whatchanged -p output follows ---

commit 38f5745c5a90641079fd5b48600ae63f7ab6edcd
Author: Jack Steiner <steiner@sgi.com>
Date:   Thu Aug 31 11:35:57 2006 -0500

    [IA64] SN fix for cpu hotplug/kexec
    
    The sn_cpu_init() is required for cpu initialization on SN platforms.
    Change __init to __cpuinit so that the function is not freed with init code/data.
    
    Signed-off-by: Jack Steiner <steiner@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/sn/kernel/setup.c b/arch/ia64/sn/kernel/setup.c
index c119e8b..5f2dcba 100644
--- a/arch/ia64/sn/kernel/setup.c
+++ b/arch/ia64/sn/kernel/setup.c
@@ -565,7 +565,7 @@ static void __init sn_init_pdas(char **c
  * Also sets up a few fields in the nodepda.  Also known as
  * platform_cpu_init() by the ia64 machvec code.
  */
-void __init sn_cpu_init(void)
+void __cpuinit sn_cpu_init(void)
 {
 	int cpuid;
 	int cpuphyid;

commit 1c7d67073e2d196597f541351bc9b109c8a93528
Author: Jack Steiner <steiner@sgi.com>
Date:   Thu Aug 31 11:34:47 2006 -0500

    [IA64] Save register stack contents on cpu start
    
    The SN PROM uses the register stack in the slave loop. The contents
    must be preserved for the OS to return to the slave loop via offlining
    a cpu or for kexec. A 'flushrs" is needed to force the stack to be written
    to memory prior to changing bspstore.
    
    Signed-off-by: Jack Steiner <steiner@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/head.S b/arch/ia64/kernel/head.S
index 29236f0..44d540e 100644
--- a/arch/ia64/kernel/head.S
+++ b/arch/ia64/kernel/head.S
@@ -197,6 +197,11 @@ start_ap:
 	;;
 	srlz.i
 	;;
+ {
+	flushrs				// must be first insn in group
+	srlz.i
+ }
+	;;
 	/*
 	 * Save the region registers, predicate before they get clobbered
 	 */

commit 2636255488484e04d6d54303d2b0ec30f7ef7e02
Author: Andreas Schwab <schwab@suse.de>
Date:   Mon Sep 4 21:56:09 2006 +0200

    [IA64] Unwire set/get_robust_list
    
    The syscalls set/get_robust_list must not be wired up until
    futex_atomic_cmpxchg_inatomic is implemented.  Otherwise the kernel will
    hang in handle_futex_death.
    
    Signed-off-by: Andreas Schwab <schwab@suse.de>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S
index 12701cf..fef0657 100644
--- a/arch/ia64/kernel/entry.S
+++ b/arch/ia64/kernel/entry.S
@@ -1605,8 +1605,8 @@ sys_call_table:
 	data8 sys_ni_syscall			// 1295 reserved for ppoll
 	data8 sys_unshare
 	data8 sys_splice
-	data8 sys_set_robust_list
-	data8 sys_get_robust_list
+	data8 sys_ni_syscall			// reserved for set_robust_list
+	data8 sys_ni_syscall			// reserved for get_robust_list
 	data8 sys_sync_file_range		// 1300
 	data8 sys_tee
 	data8 sys_vmsplice
diff --git a/include/asm-ia64/unistd.h b/include/asm-ia64/unistd.h
index bb0eb72..f581662 100644
--- a/include/asm-ia64/unistd.h
+++ b/include/asm-ia64/unistd.h
@@ -286,8 +286,7 @@ #define __NR_faccessat			1293
 /* 1294, 1295 reserved for pselect/ppoll */
 #define __NR_unshare			1296
 #define __NR_splice			1297
-#define __NR_set_robust_list		1298
-#define __NR_get_robust_list		1299
+/* 1298, 1299 reserved for set_robust_list/get_robust_list */
 #define __NR_sync_file_range		1300
 #define __NR_tee			1301
 #define __NR_vmsplice			1302

commit b8444d00762703e1b6146fce12ce2684885f8bf6
Author: Stephane Eranian <eranian@hpl.hp.com>
Date:   Fri Aug 25 14:00:19 2006 -0700

    [IA64] correct file descriptor reference counting in perfmon
    
    Fix a bug in sys_perfmonctl() whereby it was not correctly
    decrementing the file descriptor reference count.
    
    Signed-off-by: stephane eranian <eranian@hpl.hp.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c
index c7ccd6e..84a7e52 100644
--- a/arch/ia64/kernel/perfmon.c
+++ b/arch/ia64/kernel/perfmon.c
@@ -4936,13 +4936,15 @@ abort_locked:
 	if (likely(ctx)) {
 		DPRINT(("context unlocked\n"));
 		UNPROTECT_CTX(ctx, flags);
-		fput(file);
 	}
 
 	/* copy argument back to user, if needed */
 	if (call_made && PFM_CMD_RW_ARG(cmd) && copy_to_user(arg, args_k, base_sz*count)) ret = -EFAULT;
 
 error_args:
+	if (file)
+		fput(file);
+
 	kfree(args_k);
 
 	DPRINT(("cmd=%s ret=%ld\n", PFM_CMD_NAME(cmd), ret));

^ permalink raw reply related	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (67 preceding siblings ...)
  2006-09-08 19:11 ` Luck, Tony
@ 2006-09-27  0:15 ` Luck, Tony
  2006-10-06 17:46 ` Luck, Tony
                   ` (68 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-09-27  0:15 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

first batch of ia64 patches for 2.6.19

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/Kconfig              |    8 +
 arch/ia64/kernel/Makefile      |    5 
 arch/ia64/kernel/entry.S       |    4 
 arch/ia64/kernel/esi.c         |  205 +++++++++++++++++++++++++++++++++++
 arch/ia64/kernel/esi_stub.S    |   96 ++++++++++++++++
 arch/ia64/kernel/ia64_ksyms.c  |    4 
 arch/ia64/kernel/kprobes.c     |   61 ++++++----
 arch/ia64/kernel/mca.c         |  234 ++++++++++++++++++++++++++++++++++++-----
 arch/ia64/kernel/mca_asm.S     |    9 -
 arch/ia64/kernel/mca_drv.c     |   54 ++++++---
 arch/ia64/kernel/mca_drv.h     |    4 
 arch/ia64/kernel/perfmon.c     |  113 ++++++++-----------
 arch/ia64/kernel/salinfo.c     |    4 
 arch/ia64/kernel/setup.c       |   41 +++++--
 arch/ia64/kernel/smpboot.c     |   24 ++++
 arch/ia64/kernel/vmlinux.lds.S |    8 +
 arch/ia64/mm/contig.c          |   17 +-
 arch/ia64/mm/discontig.c       |   38 +++---
 arch/ia64/sn/kernel/bte.c      |    3 
 include/asm-ia64/esi.h         |   30 +++++
 include/asm-ia64/futex.h       |  122 +++++++++++++++++++++
 include/asm-ia64/kprobes.h     |    9 -
 include/asm-ia64/mca_asm.h     |    2 
 include/asm-ia64/pal.h         |   16 ++
 include/asm-ia64/processor.h   |   13 --
 include/asm-ia64/smp.h         |    1 
 include/asm-ia64/unistd.h      |    3 
 27 files changed, 925 insertions(+), 203 deletions(-)

Al Stone:
      [IA64] minor reformatting to vmlinux.lds.S

bibo mao:
      [IA64] kprobe opcode 16 bytes alignment on IA64

Christoph Lameter:
      [IA64-SGI] Do not request DMA memory for BTE

David Mosberger-Tang:
      [IA64] esi-support

Hidetoshi Seto:
      [IA64] printing support for MCA/INIT
      [IA64] CMC/CPE: Reverse the order of fetching log and checking poll threshold

Jakub Jelinek:
      [IA64] Implement futex primitives

Jes Sorensen:
      [IA64] show_mem() printk levels
      [IA64] trim output of show_mem()

Keshavamurthy Anil S:
      [IA64] kprobes: fixup the pagefault exception caused by probehandlers
      [IA64] Move perfmon tables from thread_struct to pfm_context

Russ Anderson:
      [IA64] ar.fpsr not set on MCA/INIT kernel entry
      [IA64] PAL calls need physical mode, stacked

Stephane Eranian:
      [IA64] Add interface so modules can discover whether multithreading is on.

Tony Luck:
      [IA64] Add "model name" to /proc/cpuinfo
      Revert "[IA64] Unwire set/get_robust_list"

Zou Nan hai:
      [IA64] Make gp value point to Region 5 in mca handler

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (68 preceding siblings ...)
  2006-09-27  0:15 ` Luck, Tony
@ 2006-10-06 17:46 ` Luck, Tony
  2006-10-06 18:09 ` Linus Torvalds
                   ` (67 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-10-06 17:46 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

I think we also need to have a

	EXPORT_PER_CPU_SYMBOL_GPL(__irq_regs);

in libs/irq_regs.c.  I'm seeing errors like:

 WARNING: "per_cpu____irq_regs" [drivers/usb/host/ohci-hcd.ko] undefined!

while building modules.

-Tony

 arch/ia64/kernel/irq.c                    |    5 ++++-
 arch/ia64/kernel/irq_ia64.c               |    7 +++++--
 arch/ia64/sn/kernel/sn2/timer_interrupt.c |    2 +-
 drivers/serial/sn_console.c               |    2 +-
 4 files changed, 11 insertions(+), 5 deletions(-)

Tony Luck:
      [IA64] Fix breakage from irq change

^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (69 preceding siblings ...)
  2006-10-06 17:46 ` Luck, Tony
@ 2006-10-06 18:09 ` Linus Torvalds
  2006-10-18 15:52 ` Luck, Tony
                   ` (66 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Linus Torvalds @ 2006-10-06 18:09 UTC (permalink / raw)
  To: linux-ia64



On Fri, 6 Oct 2006, Luck, Tony wrote:

> please pull from:
> 
> 	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

Pulled.

> I think we also need to have a
> 
> 	EXPORT_PER_CPU_SYMBOL_GPL(__irq_regs);
> 
> in libs/irq_regs.c.  I'm seeing errors like:

Yes. This should already be fixed in my current tree.

		Linus

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (70 preceding siblings ...)
  2006-10-06 18:09 ` Linus Torvalds
@ 2006-10-18 15:52 ` Luck, Tony
  2006-11-01  0:56 ` Luck, Tony
                   ` (65 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-10-18 15:52 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/configs/sn2_defconfig |  219 +++++++++++++++++++++++++++++++---------
 arch/ia64/kernel/acpi.c         |    9 -
 arch/ia64/kernel/irq_ia64.c     |   20 +++
 arch/ia64/kernel/pal.S          |   58 ++++------
 arch/ia64/kernel/perfmon.c      |    3 
 arch/ia64/kernel/time.c         |    6 +
 arch/ia64/sn/kernel/setup.c     |   12 --
 include/asm-ia64/io.h           |    4 
 include/asm-ia64/pal.h          |   11 --
 9 files changed, 232 insertions(+), 110 deletions(-)

Aron Griffis:
      [IA64] move ioremap/ioremap_nocache under __KERNEL__

Bjorn Helgaas:
      [IA64] remove unused PAL_CALL_IC_OFF
      [IA64] reformat pal.S to fit in 80 columns, fix typos
      [IA64] remove unused acpi_kbd_controller_present, acpi_legacy_devices

Jack Steiner:
      [IA64] - Allow IPIs in timer loop
      [IA64] Count resched interrupts

Jes Sorensen:
      [IA64] update sn2_defconfig

Tony Luck:
      [IA64] perfmon fix for global IRQ fix

... and the complete "git what changed -p" ...

commit 9b3377f9921766b6193861d0e3194854b1d765fe
Author: Jack Steiner <steiner@sgi.com>
Date:   Mon Oct 16 16:17:43 2006 -0500

    [IA64] Count resched interrupts
    
    Count the number of "resched" interrupts that each cpu receives.
    
    Signed-off-by: Jack Steiner <steiner@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/irq_ia64.c b/arch/ia64/kernel/irq_ia64.c
index 68339dd..9c6dafa 100644
--- a/arch/ia64/kernel/irq_ia64.c
+++ b/arch/ia64/kernel/irq_ia64.c
@@ -180,7 +180,9 @@ #endif /* IRQ_DEBUG */
 	saved_tpr = ia64_getreg(_IA64_REG_CR_TPR);
 	ia64_srlz_d();
 	while (vector != IA64_SPURIOUS_INT_VECTOR) {
-		if (!IS_RESCHEDULE(vector)) {
+		if (unlikely(IS_RESCHEDULE(vector)))
+			 kstat_this_cpu.irqs[vector]++;
+		else {
 			ia64_setreg(_IA64_REG_CR_TPR, vector);
 			ia64_srlz_d();
 
@@ -225,7 +227,9 @@ void ia64_process_pending_intr(void)
 	  * Perform normal interrupt style processing
 	  */
 	while (vector != IA64_SPURIOUS_INT_VECTOR) {
-		if (!IS_RESCHEDULE(vector)) {
+		if (unlikely(IS_RESCHEDULE(vector)))
+			 kstat_this_cpu.irqs[vector]++;
+		else {
 			struct pt_regs *old_regs = set_irq_regs(NULL);
 
 			ia64_setreg(_IA64_REG_CR_TPR, vector);
@@ -258,11 +262,22 @@ #endif
 #ifdef CONFIG_SMP
 extern irqreturn_t handle_IPI (int irq, void *dev_id);
 
+static irqreturn_t dummy_handler (int irq, void *dev_id)
+{
+	BUG();
+}
+
 static struct irqaction ipi_irqaction = {
 	.handler =	handle_IPI,
 	.flags =	IRQF_DISABLED,
 	.name =		"IPI"
 };
+
+static struct irqaction resched_irqaction = {
+	.handler =	dummy_handler,
+	.flags =	SA_INTERRUPT,
+	.name =		"resched"
+};
 #endif
 
 void
@@ -287,6 +302,7 @@ init_IRQ (void)
 	register_percpu_irq(IA64_SPURIOUS_INT_VECTOR, NULL);
 #ifdef CONFIG_SMP
 	register_percpu_irq(IA64_IPI_VECTOR, &ipi_irqaction);
+	register_percpu_irq(IA64_IPI_RESCHEDULE, &resched_irqaction);
 #endif
 #ifdef CONFIG_PERFMON
 	pfm_init_percpu();

commit 219902677351665bf0513115592a6dd665cf06e8
Author: Bjorn Helgaas <bjorn.helgaas@hp.com>
Date:   Fri Sep 29 12:58:31 2006 -0600

    [IA64] remove unused acpi_kbd_controller_present, acpi_legacy_devices
    
    Nobody uses either one anymore.
    
    Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
index 32c3abe..73ef4a8 100644
--- a/arch/ia64/kernel/acpi.c
+++ b/arch/ia64/kernel/acpi.c
@@ -64,9 +64,6 @@ EXPORT_SYMBOL(pm_idle);
 void (*pm_power_off) (void);
 EXPORT_SYMBOL(pm_power_off);
 
-unsigned char acpi_kbd_controller_present = 1;
-unsigned char acpi_legacy_devices;
-
 unsigned int acpi_cpei_override;
 unsigned int acpi_cpei_phys_cpuid;
 
@@ -628,12 +625,6 @@ static int __init acpi_parse_fadt(unsign
 
 	fadt = (struct fadt_descriptor *)fadt_header;
 
-	if (!(fadt->iapc_boot_arch & BAF_8042_KEYBOARD_CONTROLLER))
-		acpi_kbd_controller_present = 0;
-
-	if (fadt->iapc_boot_arch & BAF_LEGACY_DEVICES)
-		acpi_legacy_devices = 1;
-
 	acpi_register_gsi(fadt->sci_int, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW);
 	return 0;
 }
diff --git a/arch/ia64/sn/kernel/setup.c b/arch/ia64/sn/kernel/setup.c
index 5f2dcba..7a2d824 100644
--- a/arch/ia64/sn/kernel/setup.c
+++ b/arch/ia64/sn/kernel/setup.c
@@ -65,7 +65,6 @@ extern void sn_timer_init(void);
 extern unsigned long last_time_offset;
 extern void (*ia64_mark_idle) (int);
 extern void snidle(int);
-extern unsigned char acpi_kbd_controller_present;
 extern unsigned long long (*ia64_printk_clock)(void);
 
 unsigned long sn_rtc_cycles_per_second;
@@ -452,17 +451,6 @@ #endif				/* def(CONFIG_VT) && def(CONFI
 
 	ia64_printk_clock = ia64_sn2_printk_clock;
 
-	/*
-	 * Old PROMs do not provide an ACPI FADT. Disable legacy keyboard
-	 * support here so we don't have to listen to failed keyboard probe
-	 * messages.
-	 */
-	if (is_shub1() && version <= 0x0209 && acpi_kbd_controller_present) {
-		printk(KERN_INFO "Disabling legacy keyboard support as prom "
-		       "is too old and doesn't provide FADT\n");
-		acpi_kbd_controller_present = 0;
-	}
-
 	printk("SGI SAL version %x.%02x\n", version >> 8, version & 0x00FF);
 
 	/*

commit 8611342f3dda0e13970e724129a8e2066de1362e
Author: Jes Sorensen <jes@sgi.com>
Date:   Mon Oct 9 05:24:57 2006 -0400

    [IA64] update sn2_defconfig
    
    The current sn2_defconfig is obsolete, in particular the recent ATA
    changes are a pain, so here's a patch to get things in sync ... at
    least for a day or two :)
    
    Update sn_defconfig to match current community kernel tree.
    
    Signed-off-by: Jes Sorensen <jes@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/configs/sn2_defconfig b/arch/ia64/configs/sn2_defconfig
index 0f14a82..64e951d 100644
--- a/arch/ia64/configs/sn2_defconfig
+++ b/arch/ia64/configs/sn2_defconfig
@@ -1,8 +1,9 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.17-rc3
-# Thu Apr 27 11:48:23 2006
+# Linux kernel version: 2.6.19-rc1
+# Mon Oct  9 10:53:59 2006
 #
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
 
 #
 # Code maturity level options
@@ -18,16 +19,22 @@ CONFIG_LOCALVERSION=""
 # CONFIG_LOCALVERSION_AUTO is not set
 CONFIG_SWAP=y
 CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
 CONFIG_POSIX_MQUEUE=y
 # CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
+CONFIG_TASKSTATS=y
+# CONFIG_TASK_DELAY_ACCT is not set
+# CONFIG_UTS_NS is not set
 # CONFIG_AUDIT is not set
 # CONFIG_IKCONFIG is not set
 CONFIG_CPUSETS=y
 CONFIG_RELAY=y
 CONFIG_INITRAMFS_SOURCE=""
 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_TASK_XACCT=y
+CONFIG_SYSCTL=y
 # CONFIG_EMBEDDED is not set
+# CONFIG_SYSCTL_SYSCALL is not set
 CONFIG_KALLSYMS=y
 CONFIG_KALLSYMS_ALL=y
 # CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -40,6 +47,8 @@ CONFIG_FUTEX=y
 CONFIG_EPOLL=y
 CONFIG_SHMEM=y
 CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
 # CONFIG_TINY_SHMEM is not set
 CONFIG_BASE_SMALL=0
 # CONFIG_SLOB is not set
@@ -58,6 +67,7 @@ CONFIG_STOP_MACHINE=y
 #
 # Block layer
 #
+CONFIG_BLOCK=y
 # CONFIG_BLK_DEV_IO_TRACE is not set
 
 #
@@ -89,7 +99,7 @@ CONFIG_EFI=y
 CONFIG_GENERIC_IOMAP=y
 CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
 CONFIG_IA64_UNCACHED_ALLOCATOR=y
-CONFIG_DMA_IS_DMA32=y
+CONFIG_AUDIT_ARCH=y
 # CONFIG_IA64_GENERIC is not set
 # CONFIG_IA64_DIG is not set
 # CONFIG_IA64_HP_ZX1 is not set
@@ -116,6 +126,7 @@ CONFIG_FORCE_MAX_ZONEORDER\x17
 CONFIG_SMP=y
 CONFIG_NR_CPUS\x1024
 # CONFIG_HOTPLUG_CPU is not set
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
 CONFIG_SCHED_SMT=y
 CONFIG_PREEMPT=y
 CONFIG_SELECT_MEMORY_MODEL=y
@@ -128,6 +139,7 @@ CONFIG_NEED_MULTIPLE_NODES=y
 # CONFIG_SPARSEMEM_STATIC is not set
 CONFIG_SPLIT_PTLOCK_CPUS=4
 CONFIG_MIGRATION=y
+CONFIG_RESOURCES_64BIT=y
 CONFIG_ARCH_SELECT_MEMORY_MODEL=y
 CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
 CONFIG_ARCH_FLATMEM_ENABLE=y
@@ -135,15 +147,24 @@ CONFIG_ARCH_SPARSEMEM_ENABLE=y
 CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y
 CONFIG_NUMA=y
 CONFIG_NODES_SHIFT\x10
+CONFIG_ARCH_POPULATES_NODE_MAP=y
 CONFIG_VIRTUAL_MEM_MAP=y
 CONFIG_HOLES_IN_ZONE=y
 CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y
+CONFIG_HAVE_ARCH_NODEDATA_EXTENSION=y
 CONFIG_IA32_SUPPORT=y
 CONFIG_COMPAT=y
 CONFIG_IA64_MCA_RECOVERY=y
 CONFIG_PERFMON=y
 CONFIG_IA64_PALINFO=y
 CONFIG_SGI_SN=y
+# CONFIG_IA64_ESI is not set
+
+#
+# SN Devices
+#
+CONFIG_SGI_IOC4=y
+CONFIG_SGI_IOC3=y
 
 #
 # Firmware Drivers
@@ -159,6 +180,7 @@ #
 CONFIG_PM=y
 # CONFIG_PM_LEGACY is not set
 # CONFIG_PM_DEBUG is not set
+# CONFIG_PM_SYSFS_DEPRECATED is not set
 
 #
 # ACPI (Advanced Configuration and Power Interface) Support
@@ -166,6 +188,7 @@ #
 CONFIG_ACPI=y
 # CONFIG_ACPI_BUTTON is not set
 # CONFIG_ACPI_FAN is not set
+# CONFIG_ACPI_DOCK is not set
 # CONFIG_ACPI_PROCESSOR is not set
 CONFIG_ACPI_NUMA=y
 CONFIG_ACPI_BLACKLIST_YEAR=0
@@ -185,7 +208,12 @@ # Bus options (PCI, PCMCIA)
 #
 CONFIG_PCI=y
 CONFIG_PCI_DOMAINS=y
+CONFIG_PCIEPORTBUS=y
+CONFIG_HOTPLUG_PCI_PCIE=y
+# CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set
+CONFIG_PCIEAER=y
 # CONFIG_PCI_MSI is not set
+# CONFIG_PCI_MULTITHREAD_PROBE is not set
 # CONFIG_PCI_DEBUG is not set
 
 #
@@ -215,6 +243,9 @@ # CONFIG_NETDEBUG is not set
 CONFIG_PACKET=y
 CONFIG_PACKET_MMAP=y
 CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
 # CONFIG_NET_KEY is not set
 CONFIG_INET=y
 CONFIG_IP_MULTICAST=y
@@ -231,19 +262,31 @@ # CONFIG_INET_ESP is not set
 # CONFIG_INET_IPCOMP is not set
 # CONFIG_INET_XFRM_TUNNEL is not set
 # CONFIG_INET_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
 CONFIG_INET_DIAG=m
 CONFIG_INET_TCP_DIAG=m
 # CONFIG_TCP_CONG_ADVANCED is not set
-CONFIG_TCP_CONG_BIC=y
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
 CONFIG_IPV6=m
 # CONFIG_IPV6_PRIVACY is not set
 # CONFIG_IPV6_ROUTER_PREF is not set
 # CONFIG_INET6_AH is not set
 # CONFIG_INET6_ESP is not set
 # CONFIG_INET6_IPCOMP is not set
+# CONFIG_IPV6_MIP6 is not set
 # CONFIG_INET6_XFRM_TUNNEL is not set
 # CONFIG_INET6_TUNNEL is not set
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
 # CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_SUBTREES is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
 # CONFIG_NETFILTER is not set
 
 #
@@ -269,7 +312,6 @@ # CONFIG_IPX is not set
 # CONFIG_ATALK is not set
 # CONFIG_X25 is not set
 # CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
 # CONFIG_ECONET is not set
 # CONFIG_WAN_ROUTER is not set
 
@@ -298,6 +340,7 @@ CONFIG_STANDALONE=y
 CONFIG_PREVENT_FIRMWARE_BUILD=y
 CONFIG_FW_LOADER=y
 # CONFIG_DEBUG_DRIVER is not set
+# CONFIG_SYS_HYPERVISOR is not set
 
 #
 # Connector - unified userspace <-> kernelspace linker
@@ -335,6 +378,7 @@ # CONFIG_BLK_DEV_UB is not set
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM_COUNT\x16
 CONFIG_BLK_DEV_RAM_SIZE@96
+CONFIG_BLK_DEV_RAM_BLOCKSIZE\x1024
 CONFIG_BLK_DEV_INITRD=y
 # CONFIG_CDROM_PKTCDVD is not set
 CONFIG_ATA_OVER_ETH=m
@@ -381,6 +425,7 @@ # CONFIG_BLK_DEV_CS5520 is not set
 # CONFIG_BLK_DEV_CS5530 is not set
 # CONFIG_BLK_DEV_HPT34X is not set
 # CONFIG_BLK_DEV_HPT366 is not set
+# CONFIG_BLK_DEV_JMICRON is not set
 # CONFIG_BLK_DEV_SC1200 is not set
 # CONFIG_BLK_DEV_PIIX is not set
 # CONFIG_BLK_DEV_IT821X is not set
@@ -404,6 +449,7 @@ # SCSI device support
 #
 # CONFIG_RAID_ATTRS is not set
 CONFIG_SCSI=y
+CONFIG_SCSI_NETLINK=y
 CONFIG_SCSI_PROC_FS=y
 
 #
@@ -425,12 +471,14 @@ CONFIG_SCSI_CONSTANTS=y
 # CONFIG_SCSI_LOGGING is not set
 
 #
-# SCSI Transport Attributes
+# SCSI Transports
 #
 CONFIG_SCSI_SPI_ATTRS=y
 CONFIG_SCSI_FC_ATTRS=y
 CONFIG_SCSI_ISCSI_ATTRS=m
 CONFIG_SCSI_SAS_ATTRS=y
+CONFIG_SCSI_SAS_LIBSAS=y
+# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set
 
 #
 # SCSI low-level drivers
@@ -443,46 +491,82 @@ # 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_AIC94XX is not set
+# CONFIG_SCSI_ARCMSR is not set
 # CONFIG_MEGARAID_NEWGEN is not set
 # CONFIG_MEGARAID_LEGACY is not set
 # CONFIG_MEGARAID_SAS is not set
-CONFIG_SCSI_SATA=y
-# CONFIG_SCSI_SATA_AHCI is not set
-# CONFIG_SCSI_SATA_SVW is not set
-# CONFIG_SCSI_ATA_PIIX is not set
-# CONFIG_SCSI_SATA_MV is not set
-# CONFIG_SCSI_SATA_NV is not set
-# CONFIG_SCSI_PDC_ADMA is not set
-# CONFIG_SCSI_SATA_QSTOR is not set
-# CONFIG_SCSI_SATA_PROMISE is not set
-# CONFIG_SCSI_SATA_SX4 is not set
-# CONFIG_SCSI_SATA_SIL is not set
-# CONFIG_SCSI_SATA_SIL24 is not set
-# CONFIG_SCSI_SATA_SIS is not set
-# CONFIG_SCSI_SATA_ULI is not set
-# CONFIG_SCSI_SATA_VIA is not set
-CONFIG_SCSI_SATA_VITESSE=y
+# CONFIG_SCSI_HPTIOP 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_STEX is not set
 # CONFIG_SCSI_SYM53C8XX_2 is not set
 # CONFIG_SCSI_IPR is not set
 CONFIG_SCSI_QLOGIC_1280=y
 CONFIG_SCSI_QLA_FC=y
-CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE=y
-# CONFIG_SCSI_QLA21XX is not set
-CONFIG_SCSI_QLA22XX=y
-CONFIG_SCSI_QLA2300=y
-CONFIG_SCSI_QLA2322=y
-# CONFIG_SCSI_QLA24XX is not set
+# CONFIG_SCSI_QLA_ISCSI is not set
 # CONFIG_SCSI_LPFC is not set
 # CONFIG_SCSI_DC395x is not set
 # CONFIG_SCSI_DC390T is not set
 # CONFIG_SCSI_DEBUG is not set
 
 #
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+CONFIG_ATA=y
+# CONFIG_SATA_AHCI is not set
+# CONFIG_SATA_SVW is not set
+# CONFIG_ATA_PIIX is not set
+# CONFIG_SATA_MV is not set
+# CONFIG_SATA_NV is not set
+# CONFIG_PDC_ADMA is not set
+# CONFIG_SATA_QSTOR is not set
+# CONFIG_SATA_PROMISE is not set
+# CONFIG_SATA_SX4 is not set
+# CONFIG_SATA_SIL is not set
+# CONFIG_SATA_SIL24 is not set
+# CONFIG_SATA_SIS is not set
+# CONFIG_SATA_ULI is not set
+# CONFIG_SATA_VIA is not set
+CONFIG_SATA_VITESSE=y
+# CONFIG_PATA_ALI is not set
+# CONFIG_PATA_AMD is not set
+# CONFIG_PATA_ARTOP is not set
+# CONFIG_PATA_ATIIXP is not set
+# CONFIG_PATA_CMD64X is not set
+# CONFIG_PATA_CS5520 is not set
+# CONFIG_PATA_CS5530 is not set
+# CONFIG_PATA_CYPRESS is not set
+# CONFIG_PATA_EFAR is not set
+# CONFIG_ATA_GENERIC is not set
+# CONFIG_PATA_HPT366 is not set
+# CONFIG_PATA_HPT37X is not set
+# CONFIG_PATA_HPT3X2N is not set
+# CONFIG_PATA_HPT3X3 is not set
+# CONFIG_PATA_IT821X is not set
+# CONFIG_PATA_JMICRON is not set
+# CONFIG_PATA_TRIFLEX is not set
+# CONFIG_PATA_MPIIX is not set
+# CONFIG_PATA_OLDPIIX is not set
+# CONFIG_PATA_NETCELL is not set
+# CONFIG_PATA_NS87410 is not set
+# CONFIG_PATA_OPTI is not set
+# CONFIG_PATA_OPTIDMA is not set
+# CONFIG_PATA_PDC_OLD is not set
+# CONFIG_PATA_RADISYS is not set
+# CONFIG_PATA_RZ1000 is not set
+# CONFIG_PATA_SC1200 is not set
+# CONFIG_PATA_SERVERWORKS is not set
+# CONFIG_PATA_PDC2027X is not set
+# CONFIG_PATA_SIL680 is not set
+# CONFIG_PATA_SIS is not set
+# CONFIG_PATA_VIA is not set
+# CONFIG_PATA_WINBOND is not set
+
+#
 # Multi-device support (RAID and LVM)
 #
 CONFIG_MD=y
@@ -491,12 +575,12 @@ CONFIG_MD_LINEAR=y
 CONFIG_MD_RAID0=y
 CONFIG_MD_RAID1=y
 # CONFIG_MD_RAID10 is not set
-CONFIG_MD_RAID5=y
+CONFIG_MD_RAID456=y
 # CONFIG_MD_RAID5_RESHAPE is not set
-# CONFIG_MD_RAID6 is not set
 CONFIG_MD_MULTIPATH=y
 # CONFIG_MD_FAULTY is not set
 CONFIG_BLK_DEV_DM=y
+# CONFIG_DM_DEBUG is not set
 CONFIG_DM_CRYPT=m
 CONFIG_DM_SNAPSHOT=m
 CONFIG_DM_MIRROR=m
@@ -563,6 +647,7 @@ # CONFIG_SKY2 is not set
 # CONFIG_SK98LIN is not set
 CONFIG_TIGON3=y
 # CONFIG_BNX2 is not set
+# CONFIG_QLA3XXX is not set
 
 #
 # Ethernet (10000 Mbit)
@@ -571,6 +656,7 @@ CONFIG_CHELSIO_T1=m
 # CONFIG_IXGB is not set
 CONFIG_S2IO=m
 # CONFIG_S2IO_NAPI is not set
+# CONFIG_MYRI10GE is not set
 
 #
 # Token Ring devices
@@ -612,6 +698,7 @@ #
 # Input device support
 #
 CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
 
 #
 # Userland interfaces
@@ -646,6 +733,7 @@ #
 CONFIG_VT=y
 CONFIG_VT_CONSOLE=y
 CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
 CONFIG_SERIAL_NONSTANDARD=y
 # CONFIG_COMPUTONE is not set
 # CONFIG_ROCKETPORT is not set
@@ -659,10 +747,12 @@ # CONFIG_SYNCLINK_GT is not set
 # CONFIG_N_HDLC is not set
 # CONFIG_SPECIALIX is not set
 # CONFIG_SX is not set
+# CONFIG_RIO is not set
 # CONFIG_STALDRV is not set
 CONFIG_SGI_SNSC=y
 CONFIG_SGI_TIOCX=y
 CONFIG_SGI_MBCS=m
+CONFIG_MSPEC=y
 
 #
 # Serial drivers
@@ -701,6 +791,7 @@ #
 # Ftape, the floppy tape device driver
 #
 CONFIG_AGP=y
+# CONFIG_AGP_SIS is not set
 # CONFIG_AGP_VIA is not set
 CONFIG_AGP_SGI_TIOCA=y
 # CONFIG_DRM is not set
@@ -730,7 +821,6 @@ # CONFIG_SPI_MASTER is not set
 #
 # Dallas's 1-wire bus
 #
-# CONFIG_W1 is not set
 
 #
 # Hardware Monitoring support
@@ -741,6 +831,7 @@ # CONFIG_HWMON_VID is not set
 #
 # Misc devices
 #
+# CONFIG_TIFM_CORE is not set
 
 #
 # Multimedia devices
@@ -756,6 +847,7 @@ # CONFIG_USB_DABUSB is not set
 #
 # Graphics support
 #
+CONFIG_FIRMWARE_EDID=y
 # CONFIG_FB is not set
 
 #
@@ -764,6 +856,7 @@ #
 CONFIG_VGA_CONSOLE=y
 # CONFIG_VGACON_SOFT_SCROLLBACK is not set
 CONFIG_DUMMY_CONSOLE=y
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
 
 #
 # Sound
@@ -794,6 +887,7 @@ #
 CONFIG_USB_EHCI_HCD=m
 # CONFIG_USB_EHCI_SPLIT_ISO is not set
 # CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
 # CONFIG_USB_ISP116X_HCD is not set
 CONFIG_USB_OHCI_HCD=m
 # CONFIG_USB_OHCI_BIG_ENDIAN is not set
@@ -843,6 +937,7 @@ # CONFIG_USB_ATI_REMOTE is not set
 # CONFIG_USB_ATI_REMOTE2 is not set
 # CONFIG_USB_KEYSPAN_REMOTE is not set
 # CONFIG_USB_APPLETOUCH is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
 
 #
 # USB Imaging devices
@@ -874,15 +969,18 @@ # USB Miscellaneous drivers
 #
 # CONFIG_USB_EMI62 is not set
 # CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX 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_CYPRESS_CY7C63 is not set
 # CONFIG_USB_CYTHERM is not set
-# CONFIG_USB_PHIDGETKIT is not set
-# CONFIG_USB_PHIDGETSERVO is not set
+# CONFIG_USB_PHIDGET is not set
 # CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
 # CONFIG_USB_SISUSBVGA is not set
 # CONFIG_USB_LD is not set
 
@@ -919,18 +1017,15 @@ #
 CONFIG_INFINIBAND=m
 # CONFIG_INFINIBAND_USER_MAD is not set
 CONFIG_INFINIBAND_USER_ACCESS=m
+CONFIG_INFINIBAND_ADDR_TRANS=y
 CONFIG_INFINIBAND_MTHCA=m
 CONFIG_INFINIBAND_MTHCA_DEBUG=y
+# CONFIG_INFINIBAND_AMSO1100 is not set
 CONFIG_INFINIBAND_IPOIB=m
 CONFIG_INFINIBAND_IPOIB_DEBUG=y
 # CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
 CONFIG_INFINIBAND_SRP=m
-
-#
-# SN Devices
-#
-CONFIG_SGI_IOC4=y
-CONFIG_SGI_IOC3=y
+# CONFIG_INFINIBAND_ISER is not set
 
 #
 # EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
@@ -942,6 +1037,19 @@ #
 # CONFIG_RTC_CLASS is not set
 
 #
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
 # File systems
 #
 CONFIG_EXT2_FS=y
@@ -965,15 +1073,16 @@ CONFIG_REISERFS_FS_SECURITY=y
 # CONFIG_JFS_FS is not set
 CONFIG_FS_POSIX_ACL=y
 CONFIG_XFS_FS=y
-CONFIG_XFS_EXPORT=y
 CONFIG_XFS_QUOTA=y
 # CONFIG_XFS_SECURITY is not set
 CONFIG_XFS_POSIX_ACL=y
 CONFIG_XFS_RT=y
+# CONFIG_GFS2_FS is not set
 # CONFIG_OCFS2_FS is not set
 # CONFIG_MINIX_FS is not set
 # CONFIG_ROMFS_FS is not set
 CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
 CONFIG_QUOTA=y
 # CONFIG_QFMT_V1 is not set
 # CONFIG_QFMT_V2 is not set
@@ -1007,8 +1116,10 @@ # Pseudo filesystems
 #
 CONFIG_PROC_FS=y
 CONFIG_PROC_KCORE=y
+CONFIG_PROC_SYSCTL=y
 CONFIG_SYSFS=y
 CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
 CONFIG_HUGETLBFS=y
 CONFIG_HUGETLB_PAGE=y
 CONFIG_RAMFS=y
@@ -1046,7 +1157,7 @@ CONFIG_NFSD_V4=y
 CONFIG_NFSD_TCP=y
 CONFIG_LOCKD=m
 CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=y
+CONFIG_EXPORTFS=m
 CONFIG_NFS_COMMON=y
 CONFIG_SUNRPC=m
 CONFIG_SUNRPC_GSS=m
@@ -1056,7 +1167,9 @@ CONFIG_SMB_FS=m
 # CONFIG_SMB_NLS_DEFAULT is not set
 CONFIG_CIFS=m
 # CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
 # CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
 # CONFIG_CIFS_EXPERIMENTAL is not set
 # CONFIG_NCP_FS is not set
 # CONFIG_CODA_FS is not set
@@ -1129,6 +1242,10 @@ # CONFIG_NLS_KOI8_U is not set
 CONFIG_NLS_UTF8=y
 
 #
+# Distributed Lock Manager
+#
+
+#
 # Library routines
 #
 # CONFIG_CRC_CCITT is not set
@@ -1138,9 +1255,11 @@ CONFIG_LIBCRC32C=m
 CONFIG_ZLIB_INFLATE=m
 CONFIG_ZLIB_DEFLATE=m
 CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_PLIST=y
 CONFIG_GENERIC_HARDIRQS=y
 CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_GENERIC_PENDING_IRQ=y
+CONFIG_IRQ_PER_CPU=y
 
 #
 # Instrumentation Support
@@ -1152,20 +1271,26 @@ #
 # Kernel hacking
 #
 # CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
 CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
 CONFIG_DEBUG_KERNEL=y
 CONFIG_LOG_BUF_SHIFT 
 CONFIG_DETECT_SOFTLOCKUP=y
 # CONFIG_SCHEDSTATS is not set
 # CONFIG_DEBUG_SLAB is not set
-CONFIG_DEBUG_PREEMPT=y
-# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
 # CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_RWSEMS is not set
 # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
 # CONFIG_DEBUG_KOBJECT is not set
 CONFIG_DEBUG_INFO=y
 # CONFIG_DEBUG_FS is not set
 # CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
 CONFIG_FORCED_INLINING=y
 # CONFIG_RCU_TORTURE_TEST is not set
 CONFIG_IA64_GRANULE_16MB=y
@@ -1186,6 +1311,10 @@ #
 # Cryptographic options
 #
 CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=m
 CONFIG_CRYPTO_HMAC=y
 # CONFIG_CRYPTO_NULL is not set
 # CONFIG_CRYPTO_MD4 is not set
@@ -1195,6 +1324,8 @@ # CONFIG_CRYPTO_SHA256 is not set
 # CONFIG_CRYPTO_SHA512 is not set
 # CONFIG_CRYPTO_WP512 is not set
 # CONFIG_CRYPTO_TGR192 is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
 CONFIG_CRYPTO_DES=m
 # CONFIG_CRYPTO_BLOWFISH is not set
 # CONFIG_CRYPTO_TWOFISH is not set

commit 4d5a31977cc69be8786e0033d5c148e5c62ae949
Author: Bjorn Helgaas <bjorn.helgaas@hp.com>
Date:   Thu Oct 12 16:21:17 2006 -0600

    [IA64] reformat pal.S to fit in 80 columns, fix typos
    
    Reformat to fit in 80 columns.  Fix a couple typos.  Remove
    a couple unused labels.
    
    Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/pal.S b/arch/ia64/kernel/pal.S
index 5f50e6b..0b53344 100644
--- a/arch/ia64/kernel/pal.S
+++ b/arch/ia64/kernel/pal.S
@@ -21,11 +21,12 @@ pal_entry_point:
 	.text
 
 /*
- * Set the PAL entry point address.  This could be written in C code, but we do it here
- * to keep it all in one module (besides, it's so trivial that it's
+ * Set the PAL entry point address.  This could be written in C code, but we
+ * do it here to keep it all in one module (besides, it's so trivial that it's
  * not a big deal).
  *
- * in0		Address of the PAL entry point (text address, NOT a function descriptor).
+ * in0		Address of the PAL entry point (text address, NOT a function
+ *		descriptor).
  */
 GLOBAL_ENTRY(ia64_pal_handler_init)
 	alloc r3=ar.pfs,1,0,0,0
@@ -36,9 +37,9 @@ GLOBAL_ENTRY(ia64_pal_handler_init)
 END(ia64_pal_handler_init)
 
 /*
- * Default PAL call handler.  This needs to be coded in assembly because it uses
- * the static calling convention, i.e., the RSE may not be used and calls are
- * done via "br.cond" (not "br.call").
+ * Default PAL call handler.  This needs to be coded in assembly because it
+ * uses the static calling convention, i.e., the RSE may not be used and
+ * calls are done via "br.cond" (not "br.call").
  */
 GLOBAL_ENTRY(ia64_pal_default_handler)
 	mov r8=-1
@@ -91,8 +92,8 @@ END(ia64_pal_call_static)
  * Make a PAL call using the stacked registers calling convention.
  *
  * Inputs:
- * 	in0         Index of PAL service
- * 	in2 - in3   Remaning PAL arguments
+ *	in0         Index of PAL service
+ *	in2 - in3   Remaining PAL arguments
  */
 GLOBAL_ENTRY(ia64_pal_call_stacked)
 	.prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(4)
@@ -126,18 +127,18 @@ END(ia64_pal_call_stacked)
  * Make a physical mode PAL call using the static registers calling convention.
  *
  * Inputs:
- * 	in0         Index of PAL service
- * 	in2 - in3   Remaning PAL arguments
+ *	in0         Index of PAL service
+ *	in2 - in3   Remaining PAL arguments
  *
  * PSR_LP, PSR_TB, PSR_ID, PSR_DA are never set by the kernel.
  * So we don't need to clear them.
  */
-#define PAL_PSR_BITS_TO_CLEAR							\
-	(IA64_PSR_I | IA64_PSR_IT | IA64_PSR_DT  | IA64_PSR_DB | IA64_PSR_RT |	\
-	 IA64_PSR_DD | IA64_PSR_SS | IA64_PSR_RI | IA64_PSR_ED |		\
+#define PAL_PSR_BITS_TO_CLEAR						      \
+	(IA64_PSR_I | IA64_PSR_IT | IA64_PSR_DT  | IA64_PSR_DB | IA64_PSR_RT |\
+	 IA64_PSR_DD | IA64_PSR_SS | IA64_PSR_RI | IA64_PSR_ED |	      \
 	 IA64_PSR_DFL | IA64_PSR_DFH)
 
-#define PAL_PSR_BITS_TO_SET							\
+#define PAL_PSR_BITS_TO_SET						      \
 	(IA64_PSR_BN)
 
 
@@ -173,7 +174,7 @@ GLOBAL_ENTRY(ia64_pal_call_phys_static)
 	;;
 	andcm r16=loc3,r16		// removes bits to clear from psr
 	br.call.sptk.many rp=ia64_switch_mode_phys
-.ret1:	mov rp = r8			// install return address (physical)
+	mov rp = r8			// install return address (physical)
 	mov loc5 = r19
 	mov loc6 = r20
 	br.cond.sptk.many b7
@@ -183,7 +184,6 @@ GLOBAL_ENTRY(ia64_pal_call_phys_static)
 	mov r19=loc5
 	mov r20=loc6
 	br.call.sptk.many rp=ia64_switch_mode_virt // return to virtual mode
-.ret2:
 	mov psr.l = loc3		// restore init PSR
 
 	mov ar.pfs = loc1
@@ -198,8 +198,8 @@ END(ia64_pal_call_phys_static)
  * Make a PAL call using the stacked registers in physical mode.
  *
  * Inputs:
- * 	in0         Index of PAL service
- * 	in2 - in3   Remaning PAL arguments
+ *	in0         Index of PAL service
+ *	in2 - in3   Remaining PAL arguments
  */
 GLOBAL_ENTRY(ia64_pal_call_phys_stacked)
 	.prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(5)
@@ -207,7 +207,7 @@ GLOBAL_ENTRY(ia64_pal_call_phys_stacked)
 	movl	loc2 = pal_entry_point
 1:	{
 	  mov r28  = in0		// copy procedure index
-	  mov loc0 = rp		// save rp
+	  mov loc0 = rp			// save rp
 	}
 	.body
 	;;
@@ -240,7 +240,7 @@ GLOBAL_ENTRY(ia64_pal_call_phys_stacked)
 	mov r16=loc3			// r16= original psr
 	mov r19=loc5
 	mov r20=loc6
-	br.call.sptk.many rp=ia64_switch_mode_virt	// return to virtual mode
+	br.call.sptk.many rp=ia64_switch_mode_virt // return to virtual mode
 
 	mov psr.l  = loc3		// restore init PSR
 	mov ar.pfs = loc1
@@ -252,10 +252,11 @@ GLOBAL_ENTRY(ia64_pal_call_phys_stacked)
 END(ia64_pal_call_phys_stacked)
 
 /*
- * Save scratch fp scratch regs which aren't saved in pt_regs already (fp10-fp15).
+ * Save scratch fp scratch regs which aren't saved in pt_regs already
+ * (fp10-fp15).
  *
- * NOTE: We need to do this since firmware (SAL and PAL) may use any of the scratch
- * regs fp-low partition.
+ * NOTE: We need to do this since firmware (SAL and PAL) may use any of the
+ * scratch regs fp-low partition.
  *
  * Inputs:
  *      in0	Address of stack storage for fp regs

commit c12fb1885787dcc2e20c4b88149e1e607e1293b2
Author: Bjorn Helgaas <bjorn.helgaas@hp.com>
Date:   Thu Oct 12 16:20:59 2006 -0600

    [IA64] remove unused PAL_CALL_IC_OFF
    
    Linux maps PAL instructions with an ITR, but uses a DTC for PAL data.
    Section 11.10.2.1.3, "Making PAL Procedures Calls in Physical or Virtual
    Mode," of the SDM (rev 2.2), says we must therefore make all PAL calls
    with PSR.ic = 1 so that Linux can handle any TLB faults.
    
    PAL_CALL_IC_OFF is currently unused, and as long as we use the ITR + DTC
    strategy, we can't use it.  So remove it.  I also removed the code in
    ia64_pal_call_static() that conditionally cleared PSR.ic.
    
    Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/pal.S b/arch/ia64/kernel/pal.S
index ebaf1e6..5f50e6b 100644
--- a/arch/ia64/kernel/pal.S
+++ b/arch/ia64/kernel/pal.S
@@ -50,12 +50,10 @@ END(ia64_pal_default_handler)
  *
  * in0         Index of PAL service
  * in1 - in3   Remaining PAL arguments
- * in4	       1 => clear psr.ic,  0 => don't clear psr.ic
- *
  */
 GLOBAL_ENTRY(ia64_pal_call_static)
-	.prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(5)
-	alloc loc1 = ar.pfs,5,5,0,0
+	.prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(4)
+	alloc loc1 = ar.pfs,4,5,0,0
 	movl loc2 = pal_entry_point
 1:	{
 	  mov r28 = in0
@@ -64,7 +62,6 @@ GLOBAL_ENTRY(ia64_pal_call_static)
 	}
 	;;
 	ld8 loc2 = [loc2]		// loc2 <- entry point
-	tbit.nz p6,p7 = in4, 0
 	adds r8 = 1f-1b,r8
 	mov loc4=ar.rsc			// save RSE configuration
 	;;
@@ -74,13 +71,11 @@ GLOBAL_ENTRY(ia64_pal_call_static)
 	.body
 	mov r30 = in2
 
-(p6)	rsm psr.i | psr.ic
 	mov r31 = in3
 	mov b7 = loc2
 
-(p7)	rsm psr.i
+	rsm psr.i
 	;;
-(p6)	srlz.i
 	mov rp = r8
 	br.cond.sptk.many b7
 1:	mov psr.l = loc3
diff --git a/include/asm-ia64/pal.h b/include/asm-ia64/pal.h
index 2c8fd92..4283ddc 100644
--- a/include/asm-ia64/pal.h
+++ b/include/asm-ia64/pal.h
@@ -764,7 +764,7 @@ struct ia64_pal_retval {
  * (generally 0) MUST be passed.  Reserved parameters are not optional
  * parameters.
  */
-extern struct ia64_pal_retval ia64_pal_call_static (u64, u64, u64, u64, u64);
+extern struct ia64_pal_retval ia64_pal_call_static (u64, u64, u64, u64);
 extern struct ia64_pal_retval ia64_pal_call_stacked (u64, u64, u64, u64);
 extern struct ia64_pal_retval ia64_pal_call_phys_static (u64, u64, u64, u64);
 extern struct ia64_pal_retval ia64_pal_call_phys_stacked (u64, u64, u64, u64);
@@ -774,14 +774,7 @@ extern void ia64_load_scratch_fpregs (st
 #define PAL_CALL(iprv,a0,a1,a2,a3) do {			\
 	struct ia64_fpreg fr[6];			\
 	ia64_save_scratch_fpregs(fr);			\
-	iprv = ia64_pal_call_static(a0, a1, a2, a3, 0);	\
-	ia64_load_scratch_fpregs(fr);			\
-} while (0)
-
-#define PAL_CALL_IC_OFF(iprv,a0,a1,a2,a3) do {		\
-	struct ia64_fpreg fr[6];			\
-	ia64_save_scratch_fpregs(fr);			\
-	iprv = ia64_pal_call_static(a0, a1, a2, a3, 1);	\
+	iprv = ia64_pal_call_static(a0, a1, a2, a3);	\
 	ia64_load_scratch_fpregs(fr);			\
 } while (0)
 

commit accaddb27a2d544e38e10ff2a2782b33bbbad913
Author: Jack Steiner <steiner@sgi.com>
Date:   Mon Oct 16 12:56:54 2006 -0500

    [IA64] - Allow IPIs in timer loop
    
    Allow pending IPIs to interrupt a timer interrupt that is looping
    in the do_timer() "while" loop in timer_interrupt(). (Interrupts are
    allowed at only 1 spot in the code).
    
    Signed-off-by: Jack Steiner <steiner@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c
index 41169a9..39e0cd3 100644
--- a/arch/ia64/kernel/time.c
+++ b/arch/ia64/kernel/time.c
@@ -84,6 +84,12 @@ timer_interrupt (int irq, void *dev_id)
 
 		if (time_after(new_itm, ia64_get_itc()))
 			break;
+
+		/*
+		 * Allow IPIs to interrupt the timer loop.
+		 */
+		local_irq_enable();
+		local_irq_disable();
 	}
 
 	do {

commit ffc45571dfb4b70e7eda8d97f64a05f5e5a992ac
Author: Aron Griffis <aron@hp.com>
Date:   Tue Oct 17 00:28:15 2006 -0400

    [IA64] move ioremap/ioremap_nocache under __KERNEL__
    
    I noticed these are declared extern outside of __KERNEL__, but surely
    they wouldn't be available to userland since they're defined in
    ioremap.c.  Am I missing something here?
    
    If I'm right about this, then there's probably a good deal of other
    stuff in io.h that could move inside __KERNEL__, but at least this is
    a start.
    
    Signed-off-by: Aron Griffis <aron@hp.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/include/asm-ia64/io.h b/include/asm-ia64/io.h
index 43bfff6..855c30a 100644
--- a/include/asm-ia64/io.h
+++ b/include/asm-ia64/io.h
@@ -417,6 +417,8 @@ #ifndef outl_p
 # define outl_p		outl
 #endif
 
+# ifdef __KERNEL__
+
 extern void __iomem * ioremap(unsigned long offset, unsigned long size);
 extern void __iomem * ioremap_nocache (unsigned long offset, unsigned long size);
 
@@ -430,8 +432,6 @@ #define dmi_ioremap ioremap
 #define dmi_iounmap(x,l) iounmap(x)
 #define dmi_alloc(l) kmalloc(l, GFP_ATOMIC)
 
-# ifdef __KERNEL__
-
 /*
  * String version of IO memory access ops:
  */

commit 3bbe486b361b317ac7103378ed3d1aab4779715e
Author: Tony Luck <tony.luck@intel.com>
Date:   Tue Oct 17 14:28:16 2006 -0700

    [IA64] perfmon fix for global IRQ fix
    
    Missed one piece of ia64 fallout from the global IRQ patch
     7d12e780e003f93433d49ce78cfedf4b4c52adc5
    
    Perfmon interrupt handler needs to use get_irq_regs() too.
    
    Acked-by: stephane eranian <eranian@hpl.hp.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c
index 281004f..3aaede0 100644
--- a/arch/ia64/kernel/perfmon.c
+++ b/arch/ia64/kernel/perfmon.c
@@ -5558,12 +5558,13 @@ report_spurious2:
 }
 
 static irqreturn_t
-pfm_interrupt_handler(int irq, void *arg, struct pt_regs *regs)
+pfm_interrupt_handler(int irq, void *arg)
 {
 	unsigned long start_cycles, total_cycles;
 	unsigned long min, max;
 	int this_cpu;
 	int ret;
+	struct pt_regs *regs = get_irq_regs();
 
 	this_cpu = get_cpu();
 	if (likely(!pfm_alt_intr_handler)) {

^ permalink raw reply related	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (71 preceding siblings ...)
  2006-10-18 15:52 ` Luck, Tony
@ 2006-11-01  0:56 ` Luck, Tony
  2006-11-16 19:30 ` Luck, Tony
                   ` (64 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-11-01  0:56 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/kernel/mca_drv.c |   95 ++++++++++++++++++++++++++++++++-------------
 arch/ia64/kernel/sal.c     |   11 +++--
 arch/ia64/kernel/setup.c   |    2 
 arch/ia64/kernel/smp.c     |   12 +++--
 include/asm-ia64/sal.h     |    1 
 include/asm-ia64/uaccess.h |    2 
 6 files changed, 86 insertions(+), 37 deletions(-)

Jes Sorensen:
      [IA64] don't double >> PAGE_SHIFT pointer for /dev/kmem access

Keith Owens:
      [IA64] Correct definition of handle_IPI

Kenji Kaneshige:
      [IA64] cpu-hotplug: Fixing confliction between CPU hot-add and IPI

Russ Anderson:
      [IA64] MCA recovery: Montecito support

Troy Heber:
      [IA64] move SAL_CACHE_FLUSH check later in boot

Full diffs & commit messages according to "git whatchanged -p" ...

commit 024e4f2c5175a482c234cf67ed22368d770bf78f
Author: Keith Owens <kaos@sgi.com>
Date:   Wed Oct 18 15:36:49 2006 +1000

    [IA64] Correct definition of handle_IPI
    
    The declaration of handle_IPI in arch/ia64/kernel/smp.c was changed but
    not the definition of this function.  Remove struct pt_regs from
    handle_IPI().
    
    Signed-off-by: Keith Owens <kaos@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/smp.c b/arch/ia64/kernel/smp.c
index 2763e79..6ab95ce 100644
--- a/arch/ia64/kernel/smp.c
+++ b/arch/ia64/kernel/smp.c
@@ -108,7 +108,7 @@ cpu_die(void)
 }
 
 irqreturn_t
-handle_IPI (int irq, void *dev_id, struct pt_regs *regs)
+handle_IPI (int irq, void *dev_id)
 {
 	int this_cpu = get_cpu();
 	unsigned long *pending_ipis = &__ia64_per_cpu_var(ipi_operation);

commit fa1d19e5d9a94120f31e5783ab44758f46892d94
Author: Troy Heber <troy.heber@hp.com>
Date:   Wed Oct 25 14:46:15 2006 -0600

    [IA64] move SAL_CACHE_FLUSH check later in boot
    
    The check to see if the firmware drops interrupts during a
    SAL_CACHE_FLUSH is done to early in the boot. SAL_CACHE_FLUSH expects
    to be able to make PAL calls in virtual mode, on some cell based
    machines a fault occurs causing a MCA. This patch moves the check
    after mmu_context_init so the TLB and VHPT are properly setup.
    
    Signed-off-by Troy Heber <troy.heber@hp.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/sal.c b/arch/ia64/kernel/sal.c
index 642fdc7..20bad78 100644
--- a/arch/ia64/kernel/sal.c
+++ b/arch/ia64/kernel/sal.c
@@ -223,12 +223,13 @@ #endif
  */
 static int sal_cache_flush_drops_interrupts;
 
-static void __init
+void __init
 check_sal_cache_flush (void)
 {
 	unsigned long flags;
 	int cpu;
-	u64 vector;
+	u64 vector, cache_type = 3;
+	struct ia64_sal_retval isrv;
 
 	cpu = get_cpu();
 	local_irq_save(flags);
@@ -243,7 +244,10 @@ check_sal_cache_flush (void)
 	while (!ia64_get_irr(IA64_TIMER_VECTOR))
 		cpu_relax();
 
-	ia64_sal_cache_flush(3);
+	SAL_CALL(isrv, SAL_CACHE_FLUSH, cache_type, 0, 0, 0, 0, 0, 0);
+
+	if (isrv.status)
+		printk(KERN_ERR "SAL_CAL_FLUSH failed with %ld\n", isrv.status);
 
 	if (ia64_get_irr(IA64_TIMER_VECTOR)) {
 		vector = ia64_get_ivr();
@@ -331,7 +335,6 @@ #endif
 		p += SAL_DESC_SIZE(*p);
 	}
 
-	check_sal_cache_flush();
 }
 
 int
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c
index c4caa80..d10404a 100644
--- a/arch/ia64/kernel/setup.c
+++ b/arch/ia64/kernel/setup.c
@@ -457,6 +457,8 @@ #endif
 	cpu_init();	/* initialize the bootstrap CPU */
 	mmu_context_init();	/* initialize context_id bitmap */
 
+	check_sal_cache_flush();
+
 #ifdef CONFIG_ACPI
 	acpi_boot_init();
 #endif
diff --git a/include/asm-ia64/sal.h b/include/asm-ia64/sal.h
index 0b210ab..d000689 100644
--- a/include/asm-ia64/sal.h
+++ b/include/asm-ia64/sal.h
@@ -659,6 +659,7 @@ ia64_sal_freq_base (unsigned long which,
 }
 
 extern s64 ia64_sal_cache_flush (u64 cache_type);
+extern void __init check_sal_cache_flush (void);
 
 /* Initialize all the processor and platform level instruction and data caches */
 static inline s64

commit 264b0f99308436deaee38bab99e586612d012fc1
Author: Russ Anderson <rja@sgi.com>
Date:   Wed Oct 25 17:59:47 2006 -0500

    [IA64] MCA recovery: Montecito support
    
    The information in MCA records is filled in slightly differently on
    Montecito than on Madison/McKinley.  Usually, the cache check and bus
    check target identifiers have the same address.   On Montecito the
    cache check and bus check target identifiers can be different if
    a corrected error (ie SBE or unconsumed poison data) was encountered and
    then an uncorrected error (ie DBE) was consumed.  In that case, the
    cache check target identifier is the physical address of the DBE (that
    caused the MCA to surface) while the bus check target identifier is the
    physical address of the SBE.  This patch correctly finds the target
    identifier that triggered the MCA.
    
    If there are multiple valid cache target identifiers in the same
    error record then use the one with the lowest cache level.
    
    Signed-off-by: Russ Anderson (rja@sgi.com)
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/mca_drv.c b/arch/ia64/kernel/mca_drv.c
index a45009d..afc1403 100644
--- a/arch/ia64/kernel/mca_drv.c
+++ b/arch/ia64/kernel/mca_drv.c
@@ -435,6 +435,50 @@ is_mca_global(peidx_table_t *peidx, pal_
 }
 
 /**
+ * get_target_identifier - Get the valid Cache or Bus check target identifier.
+ * @peidx:	pointer of index of processor error section
+ *
+ * Return value:
+ *	target address on Success / 0 on Failue
+ */
+static u64
+get_target_identifier(peidx_table_t *peidx)
+{
+	u64 target_address = 0;
+	sal_log_mod_error_info_t *smei;
+	pal_cache_check_info_t *pcci;
+	int i, level = 9;
+
+	/*
+	 * Look through the cache checks for a valid target identifier
+	 * If more than one valid target identifier, return the one
+	 * with the lowest cache level.
+	 */
+	for (i = 0; i < peidx_cache_check_num(peidx); i++) {
+		smei = (sal_log_mod_error_info_t *)peidx_cache_check(peidx, i);
+		if (smei->valid.target_identifier && smei->target_identifier) {
+			pcci = (pal_cache_check_info_t *)&(smei->check_info);
+			if (!target_address || (pcci->level < level)) {
+				target_address = smei->target_identifier;
+				level = pcci->level;
+				continue;
+			}
+		}
+	}
+	if (target_address)
+		return target_address;
+
+	/*
+	 * Look at the bus check for a valid target identifier
+	 */
+	smei = peidx_bus_check(peidx, 0);
+	if (smei && smei->valid.target_identifier)
+		return smei->target_identifier;
+
+	return 0;
+}
+
+/**
  * recover_from_read_error - Try to recover the errors which type are "read"s.
  * @slidx:	pointer of index of SAL error record
  * @peidx:	pointer of index of processor error section
@@ -450,13 +494,14 @@ recover_from_read_error(slidx_table_t *s
 			peidx_table_t *peidx, pal_bus_check_info_t *pbci,
 			struct ia64_sal_os_state *sos)
 {
-	sal_log_mod_error_info_t *smei;
+	u64 target_identifier;
 	pal_min_state_area_t *pmsa;
 	struct ia64_psr *psr1, *psr2;
 	ia64_fptr_t *mca_hdlr_bh = (ia64_fptr_t*)mca_handler_bhhook;
 
 	/* Is target address valid? */
-	if (!pbci->tv)
+	target_identifier = get_target_identifier(peidx);
+	if (!target_identifier)
 		return fatal_mca("target address not valid");
 
 	/*
@@ -487,32 +532,28 @@ recover_from_read_error(slidx_table_t *s
 	pmsa = sos->pal_min_state;
 	if (psr1->cpl != 0 ||
 	   ((psr2->cpl != 0) && mca_recover_range(pmsa->pmsa_iip))) {
-		smei = peidx_bus_check(peidx, 0);
-		if (smei->valid.target_identifier) {
-			/*
-			 *  setup for resume to bottom half of MCA,
-			 * "mca_handler_bhhook"
-			 */
-			/* pass to bhhook as argument (gr8, ...) */
-			pmsa->pmsa_gr[8-1] = smei->target_identifier;
-			pmsa->pmsa_gr[9-1] = pmsa->pmsa_iip;
-			pmsa->pmsa_gr[10-1] = pmsa->pmsa_ipsr;
-			/* set interrupted return address (but no use) */
-			pmsa->pmsa_br0 = pmsa->pmsa_iip;
-			/* change resume address to bottom half */
-			pmsa->pmsa_iip = mca_hdlr_bh->fp;
-			pmsa->pmsa_gr[1-1] = mca_hdlr_bh->gp;
-			/* set cpl with kernel mode */
-			psr2 = (struct ia64_psr *)&pmsa->pmsa_ipsr;
-			psr2->cpl = 0;
-			psr2->ri  = 0;
-			psr2->bn  = 1;
-			psr2->i  = 0;
-
-			return mca_recovered("user memory corruption. "
+		/*
+		 *  setup for resume to bottom half of MCA,
+		 * "mca_handler_bhhook"
+		 */
+		/* pass to bhhook as argument (gr8, ...) */
+		pmsa->pmsa_gr[8-1] = target_identifier;
+		pmsa->pmsa_gr[9-1] = pmsa->pmsa_iip;
+		pmsa->pmsa_gr[10-1] = pmsa->pmsa_ipsr;
+		/* set interrupted return address (but no use) */
+		pmsa->pmsa_br0 = pmsa->pmsa_iip;
+		/* change resume address to bottom half */
+		pmsa->pmsa_iip = mca_hdlr_bh->fp;
+		pmsa->pmsa_gr[1-1] = mca_hdlr_bh->gp;
+		/* set cpl with kernel mode */
+		psr2 = (struct ia64_psr *)&pmsa->pmsa_ipsr;
+		psr2->cpl = 0;
+		psr2->ri  = 0;
+		psr2->bn  = 1;
+		psr2->i  = 0;
+
+		return mca_recovered("user memory corruption. "
 				"kill affected process - recovered.");
-		}
-
 	}
 
 	return fatal_mca("kernel context not recovered, iip 0x%lx\n",

commit 5ee7737379b1d7f0c977c0f1661fbaf01a8d4721
Author: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Date:   Fri Oct 27 19:49:53 2006 +0900

    [IA64] cpu-hotplug: Fixing confliction between CPU hot-add and IPI
    
    Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
    Acked-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
    Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/smp.c b/arch/ia64/kernel/smp.c
index 657ac99..2763e79 100644
--- a/arch/ia64/kernel/smp.c
+++ b/arch/ia64/kernel/smp.c
@@ -328,10 +328,14 @@ int
 smp_call_function (void (*func) (void *info), void *info, int nonatomic, int wait)
 {
 	struct call_data_struct data;
-	int cpus = num_online_cpus()-1;
+	int cpus;
 
-	if (!cpus)
+	spin_lock(&call_lock);
+	cpus = num_online_cpus() - 1;
+	if (!cpus) {
+		spin_unlock(&call_lock);
 		return 0;
+	}
 
 	/* Can deadlock when called with interrupts disabled */
 	WARN_ON(irqs_disabled());
@@ -343,8 +347,6 @@ smp_call_function (void (*func) (void *i
 	if (wait)
 		atomic_set(&data.finished, 0);
 
-	spin_lock(&call_lock);
-
 	call_data = &data;
 	mb();	/* ensure store to call_data precedes setting of IPI_CALL_FUNC */
 	send_IPI_allbutself(IPI_CALL_FUNC);

commit f2454a1a4b2aca38d3b7887619f43291d773c1ee
Author: Jes Sorensen <jes@sgi.com>
Date:   Wed Oct 25 05:49:53 2006 -0400

    [IA64] don't double >> PAGE_SHIFT pointer for /dev/kmem access
    
    Don't PAGE_SHIFT pointer before handing it to virt_to_page() in
    xlate_dev_kmem_ptr() as it results in a double shift.
    
    Spotted by Bob Montgomery.
    
    Signed-off-by: Jes Sorensen <jes@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/include/asm-ia64/uaccess.h b/include/asm-ia64/uaccess.h
index 9adb512..449c8c0 100644
--- a/include/asm-ia64/uaccess.h
+++ b/include/asm-ia64/uaccess.h
@@ -389,7 +389,7 @@ xlate_dev_kmem_ptr (char * p)
 	struct page *page;
 	char * ptr;
 
-	page = virt_to_page((unsigned long)p >> PAGE_SHIFT);
+	page = virt_to_page((unsigned long)p);
 	if (PageUncached(page))
 		ptr = (char *)__pa(p) + __IA64_UNCACHED_OFFSET;
 	else

^ permalink raw reply related	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (72 preceding siblings ...)
  2006-11-01  0:56 ` Luck, Tony
@ 2006-11-16 19:30 ` Luck, Tony
  2006-12-07  0:10 ` Luck, Tony
                   ` (63 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-11-16 19:30 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release
[or
	master.kernel.org:/pub/scm/linux/kernel/git/aegl/linux-2.6.git release
as I hear that git.kernel.org is being cranky today]

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/hp/sim/Kconfig      |    4 ++--
 arch/ia64/hp/sim/hpsim_irq.c  |    2 +-
 arch/ia64/kernel/iosapic.c    |    6 +++---
 arch/ia64/kernel/irq.c        |    4 ++--
 arch/ia64/kernel/irq_ia64.c   |    4 ++--
 arch/ia64/kernel/irq_lsapic.c |    2 +-
 arch/ia64/sn/kernel/bte.c     |    9 ++++-----
 arch/ia64/sn/kernel/irq.c     |    2 +-
 8 files changed, 16 insertions(+), 17 deletions(-)

Andrew Morton:
      [IA64] irqs: use `name' not `typename'

Ingo Molnar:
      [IA64] typename -> name conversion
      [IA64] use generic_handle_irq()

Robin Holt:
      [IA64] bte_unaligned_copy() transfers one extra cache line.

Tony Luck:
      [IA64] a fix towards allmodconfig build

--- git whatchanged -p output follows ---

commit cea196bb2eb918c30f97a2b752bcec929d761f64
Author: Luck, Tony <tony.luck@intel.com>
Date:   Thu Nov 16 00:43:12 2006 -0800

    [IA64] a fix towards allmodconfig build
    
    The HP_SIMSCSI driver can't be built as a module (unhealthy dependencies on
    things that shouldn't really be exported).
    
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/hp/sim/Kconfig b/arch/ia64/hp/sim/Kconfig
index 18ccb12..f92306b 100644
--- a/arch/ia64/hp/sim/Kconfig
+++ b/arch/ia64/hp/sim/Kconfig
@@ -13,8 +13,8 @@ config HP_SIMSERIAL_CONSOLE
 	depends on HP_SIMSERIAL
 
 config HP_SIMSCSI
-	tristate "Simulated SCSI disk"
-	depends on SCSI
+	bool "Simulated SCSI disk"
+	depends on SCSI=y
 
 endmenu
 

commit 5fbb004aba15bbca64c3fb611113295bda7ee9ea
Author: Ingo Molnar <mingo@elte.hu>
Date:   Thu Nov 16 00:43:07 2006 -0800

    [IA64] use generic_handle_irq()
    
    Use generic_handle_irq() to handle mixed-type irq handling.
    
    Signed-off-by: Ingo Molnar <mingo@elte.hu>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/irq.c b/arch/ia64/kernel/irq.c
index 6fe404d..54d55e4 100644
--- a/arch/ia64/kernel/irq.c
+++ b/arch/ia64/kernel/irq.c
@@ -197,7 +197,7 @@ void fixup_irqs(void)
 			struct pt_regs *old_regs = set_irq_regs(NULL);
 
 			vectors_in_migration[irq]=0;
-			__do_IRQ(irq);
+			generic_handle_irq(irq);
 			set_irq_regs(old_regs);
 		}
 	}
diff --git a/arch/ia64/kernel/irq_ia64.c b/arch/ia64/kernel/irq_ia64.c
index 9c6dafa..ba3ba8b 100644
--- a/arch/ia64/kernel/irq_ia64.c
+++ b/arch/ia64/kernel/irq_ia64.c
@@ -186,7 +186,7 @@ #endif /* IRQ_DEBUG */
 			ia64_setreg(_IA64_REG_CR_TPR, vector);
 			ia64_srlz_d();
 
-			__do_IRQ(local_vector_to_irq(vector));
+			generic_handle_irq(local_vector_to_irq(vector));
 
 			/*
 			 * Disable interrupts and send EOI:
@@ -242,7 +242,7 @@ void ia64_process_pending_intr(void)
 			 * Probably could shared code.
 			 */
 			vectors_in_migration[local_vector_to_irq(vector)]=0;
-			__do_IRQ(local_vector_to_irq(vector));
+			generic_handle_irq(local_vector_to_irq(vector));
 			set_irq_regs(old_regs);
 
 			/*

commit 06344db3162323247e9ac8d76d5acdb79d05f3c0
Author: Ingo Molnar <mingo@elte.hu>
Date:   Thu Nov 16 00:43:02 2006 -0800

    [IA64] typename -> name conversion
    
    convert irq chip typename -> name.
    
    Signed-off-by: Ingo Molnar <mingo@elte.hu>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/hp/sim/hpsim_irq.c b/arch/ia64/hp/sim/hpsim_irq.c
index 8145547..c2f58ff 100644
--- a/arch/ia64/hp/sim/hpsim_irq.c
+++ b/arch/ia64/hp/sim/hpsim_irq.c
@@ -27,7 +27,7 @@ hpsim_set_affinity_noop (unsigned int a,
 }
 
 static struct hw_interrupt_type irq_type_hp_sim = {
-	.typename =	"hpsim",
+	.name =		"hpsim",
 	.startup =	hpsim_irq_startup,
 	.shutdown =	hpsim_irq_noop,
 	.enable =	hpsim_irq_noop,
diff --git a/arch/ia64/kernel/iosapic.c b/arch/ia64/kernel/iosapic.c
index c195faf..60d6495 100644
--- a/arch/ia64/kernel/iosapic.c
+++ b/arch/ia64/kernel/iosapic.c
@@ -426,7 +426,7 @@ #define iosapic_disable_level_irq	mask_i
 #define iosapic_ack_level_irq		nop
 
 struct hw_interrupt_type irq_type_iosapic_level = {
-	.typename =	"IO-SAPIC-level",
+	.name =		"IO-SAPIC-level",
 	.startup =	iosapic_startup_level_irq,
 	.shutdown =	iosapic_shutdown_level_irq,
 	.enable =	iosapic_enable_level_irq,
@@ -473,7 +473,7 @@ #define iosapic_disable_edge_irq	nop
 #define iosapic_end_edge_irq		nop
 
 struct hw_interrupt_type irq_type_iosapic_edge = {
-	.typename =	"IO-SAPIC-edge",
+	.name =		"IO-SAPIC-edge",
 	.startup =	iosapic_startup_edge_irq,
 	.shutdown =	iosapic_disable_edge_irq,
 	.enable =	iosapic_enable_edge_irq,
diff --git a/arch/ia64/kernel/irq_lsapic.c b/arch/ia64/kernel/irq_lsapic.c
index 1ab58b0..c2f07be 100644
--- a/arch/ia64/kernel/irq_lsapic.c
+++ b/arch/ia64/kernel/irq_lsapic.c
@@ -34,7 +34,7 @@ static int lsapic_retrigger(unsigned int
 }
 
 struct hw_interrupt_type irq_type_ia64_lsapic = {
-	.typename =	"LSAPIC",
+	.name =		"LSAPIC",
 	.startup =	lsapic_noop_startup,
 	.shutdown =	lsapic_noop,
 	.enable =	lsapic_noop,
diff --git a/arch/ia64/sn/kernel/irq.c b/arch/ia64/sn/kernel/irq.c
index 7bb6ad1..0b49459 100644
--- a/arch/ia64/sn/kernel/irq.c
+++ b/arch/ia64/sn/kernel/irq.c
@@ -201,7 +201,7 @@ static void sn_set_affinity_irq(unsigned
 }
 
 struct hw_interrupt_type irq_type_sn = {
-	.typename	= "SN hub",
+	.name		= "SN hub",
 	.startup	= sn_startup_irq,
 	.shutdown	= sn_shutdown_irq,
 	.enable		= sn_enable_irq,

commit 351a58390aad350bd5e22c7cc468f44a9330685c
Author: Andrew Morton <akpm@osdl.org>
Date:   Thu Nov 16 00:42:58 2006 -0800

    [IA64] irqs: use `name' not `typename'
    
    `typename' is going away and is usually uninitialised anwyay.
    
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/kernel/iosapic.c b/arch/ia64/kernel/iosapic.c
index 9bf15fe..c195faf 100644
--- a/arch/ia64/kernel/iosapic.c
+++ b/arch/ia64/kernel/iosapic.c
@@ -664,7 +664,7 @@ register_intr (unsigned int gsi, int vec
 			printk(KERN_WARNING
 			       "%s: changing vector %d from %s to %s\n",
 			       __FUNCTION__, vector,
-			       idesc->chip->typename, irq_type->typename);
+			       idesc->chip->name, irq_type->name);
 		idesc->chip = irq_type;
 	}
 	return 0;
diff --git a/arch/ia64/kernel/irq.c b/arch/ia64/kernel/irq.c
index f07c086..6fe404d 100644
--- a/arch/ia64/kernel/irq.c
+++ b/arch/ia64/kernel/irq.c
@@ -76,7 +76,7 @@ #else
 			seq_printf(p, "%10u ", kstat_cpu(j).irqs[i]);
 		}
 #endif
-		seq_printf(p, " %14s", irq_desc[i].chip->typename);
+		seq_printf(p, " %14s", irq_desc[i].chip->name);
 		seq_printf(p, "  %s", action->name);
 
 		for (action¬tion->next; action; action = action->next)

commit cbf093e8c7447a202e376199cc017161262bd7cd
Author: Robin Holt <holt@sgi.com>
Date:   Tue Nov 14 20:50:59 2006 -0600

    [IA64] bte_unaligned_copy() transfers one extra cache line.
    
    When called to do a transfer that has a start offset within the cache
    line which is uneven between source and destination and a length which
    terminates the source of the copy exactly on a cache line, one extra
    line gets copied into a temporary buffer.  This is normally not an issue
    since the buffer is a kernel buffer and only the requested information
    gets copied into the user buffer.
    
    The problem arises when the source ends at the very last physical page
    of memory.  That last cache line does not exist and results in the SHUB
    chip raising an MCA.
    
    Signed-off-by: Robin Holt <holt@sgi.com>
    Signed-off-by: Dean Nelson <dcn@sgi.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>

diff --git a/arch/ia64/sn/kernel/bte.c b/arch/ia64/sn/kernel/bte.c
index 7f73ad4..ff1c556 100644
--- a/arch/ia64/sn/kernel/bte.c
+++ b/arch/ia64/sn/kernel/bte.c
@@ -381,14 +381,13 @@ bte_result_t bte_unaligned_copy(u64 src,
 		 * bcopy to the destination.
 		 */
 
-		/* Add the leader from source */
-		headBteLen = len + (src & L1_CACHE_MASK);
-		/* Add the trailing bytes from footer. */
-		headBteLen += L1_CACHE_BYTES - (headBteLen & L1_CACHE_MASK);
-		headBteSource = src & ~L1_CACHE_MASK;
 		headBcopySrcOffset = src & L1_CACHE_MASK;
 		headBcopyDest = dest;
 		headBcopyLen = len;
+
+		headBteSource = src - headBcopySrcOffset;
+		/* Add the leading and trailing bytes from source */
+		headBteLen = L1_CACHE_ALIGN(len + headBcopySrcOffset);
 	}
 
 	if (headBcopyLen > 0) {

^ permalink raw reply related	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (73 preceding siblings ...)
  2006-11-16 19:30 ` Luck, Tony
@ 2006-12-07  0:10 ` Luck, Tony
  2006-12-07 23:13 ` Luck, Tony
                   ` (62 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-12-07  0:10 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

Mirroring at kernel.org is slow today ... perhaps better to use:
	master.kernel.org:/home/ftp/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

Just one build breakage patch here ... rest of 2.6.20 patches coming soon.

Thanks!

-Tony

 arch/ia64/pci/pci.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

Peter Chubb:
      [IA64] Fix pci.c kernel compilation breakage.

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (74 preceding siblings ...)
  2006-12-07  0:10 ` Luck, Tony
@ 2006-12-07 23:13 ` Luck, Tony
  2006-12-07 23:35 ` Luck, Tony
                   ` (61 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-12-07 23:13 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Biggest part of this is the kexec/kdump changes (which include a teeny generic
change to add an icache flush option to kernel/kexec.c).

Thanks!

-Tony

 arch/ia64/Kconfig                       |   23 ++
 arch/ia64/hp/common/sba_iommu.c         |   10 
 arch/ia64/hp/sim/simserial.c            |    3 
 arch/ia64/kernel/Makefile               |    1 
 arch/ia64/kernel/cpufreq/acpi-cpufreq.c |   11 -
 arch/ia64/kernel/crash.c                |  245 +++++++++++++++++++++++
 arch/ia64/kernel/efi.c                  |   71 ++++++
 arch/ia64/kernel/entry.S                |    2 
 arch/ia64/kernel/ia64_ksyms.c           |    1 
 arch/ia64/kernel/iosapic.c              |   21 ++
 arch/ia64/kernel/kprobes.c              |    2 
 arch/ia64/kernel/machine_kexec.c        |  133 ++++++++++++
 arch/ia64/kernel/mca.c                  |    5 
 arch/ia64/kernel/palinfo.c              |   22 +-
 arch/ia64/kernel/perfmon.c              |    3 
 arch/ia64/kernel/perfmon_montecito.h    |   12 -
 arch/ia64/kernel/relocate_kernel.S      |  334 ++++++++++++++++++++++++++++++++
 arch/ia64/kernel/setup.c                |   38 +++
 arch/ia64/kernel/smp.c                  |   28 ++
 arch/ia64/lib/ip_fast_csum.S            |   58 +++++
 arch/ia64/pci/pci.c                     |    3 
 arch/ia64/sn/kernel/irq.c               |   18 +
 arch/ia64/sn/kernel/msi_sn.c            |    4 
 arch/ia64/sn/kernel/setup.c             |    8 
 include/asm-ia64/checksum.h             |    6 
 include/asm-ia64/kexec.h                |   47 ++++
 include/asm-ia64/machvec.h              |    5 
 include/asm-ia64/machvec_sn2.h          |    2 
 include/asm-ia64/meminit.h              |    3 
 include/asm-ia64/page.h                 |   11 -
 include/asm-ia64/pal.h                  |   64 +++++-
 include/asm-ia64/sn/sn_sal.h            |    9 
 include/linux/kexec.h                   |    5 
 kernel/kexec.c                          |    1 
 34 files changed, 1146 insertions(+), 63 deletions(-)

Chen, Kenneth W:
      [IA64] implement csum_ipv6_magic for ia64.
      [IA64] tidy up return value of ip_fast_csum

Christoph Lameter:
      [IA64] resolve name clash by renaming is_available_memory()

John Keller:
      [IA64] SN: Correctly update smp_affinty mask

Matthew Wilcox:
      [IA64] sparse cleanups
      [IA64] Fix DISCONTIGMEM without VIRTUAL_MEM_MAP

Russ Anderson:
      [IA64] Add dp bit to cache and bus check structs
      [IA64] Add se bit to Processor State Parameter structure
      [IA64] Update processor_info features
      [IA64] More Itanium PAL spec updates

Tony Luck:
      [IA64] Need export for csum_ipv6_magic

Venkatesh Pallipadi:
      Add support for type argument in PAL_GET_PSTATE

Yan Burman:
      [IA64] replace kmalloc+memset with kzalloc

Zou Nan hai:
      [IA64] IA64 Kexec/kdump

^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (75 preceding siblings ...)
  2006-12-07 23:13 ` Luck, Tony
@ 2006-12-07 23:35 ` Luck, Tony
  2006-12-13  2:04 ` Luck, Tony
                   ` (60 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-12-07 23:35 UTC (permalink / raw)
  To: linux-ia64

> Biggest part of this is the kexec/kdump changes (which include a teeny generic
> change to add an icache flush option to kernel/kexec.c).

There are a few more patches in the queue that I'll be piling together
for another pull ... but I wanted to get the kexec/kdump monster out
of the way (it needs a little more love and attention ... there are
build errors if you configure KEXEC=y, KDUMP=n ... I took a first stab
at just fixing arch/ia64/kernel/Makefile to move crash.o into a KDUMP
dependent line of its own, which helped some, but left me with a couple
of undefined symbols at link time.  Chasing them led into generic files :-(

Stuff I know I've not dealt with yet (but plan to)

kprobes: fix to allow probes on slot 1 + qp bits on special instructions
FP exception logging overhead
XPC deadlock
remove some rsm psr.dt in ivt.S

Less certain stuff ...

Ken's patch to not use a DTR for percpu area will need a little adjustment
to fit with kexec (I think).

SGIs patches for asymmetric systems (different cpu models) are still worrying
me about how far this stuff may go ... the first two patches look fine, but
I get the feeling that we'll be peeling more layers here.

Other stuff isn't technically lost, but is piled into corners of my
not-so-efficient patch tracking system ... gentle reminders appreciated.

-Tony

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (76 preceding siblings ...)
  2006-12-07 23:35 ` Luck, Tony
@ 2006-12-13  2:04 ` Luck, Tony
  2006-12-13 19:11 ` Luck, Tony
                   ` (59 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-12-13  2:04 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/hp/sim/simserial.c      |    2 
 arch/ia64/kernel/Makefile         |    1 
 arch/ia64/kernel/crash.c          |   22 ---
 arch/ia64/kernel/crash_dump.c     |   48 ++++++++
 arch/ia64/kernel/jprobes.S        |    3 
 arch/ia64/kernel/kprobes.c        |  226 ++++++++++++++++++++++++++------------
 arch/ia64/kernel/machine_kexec.c  |    7 -
 arch/ia64/kernel/mca.c            |    2 
 arch/ia64/kernel/setup.c          |   33 ++++-
 arch/ia64/kernel/smp.c            |    4 
 arch/ia64/kernel/traps.c          |   50 ++++++--
 arch/ia64/mm/contig.c             |    9 +
 arch/ia64/mm/init.c               |    9 -
 arch/ia64/sn/kernel/setup.c       |   12 +-
 arch/ia64/sn/kernel/xpc_channel.c |   15 +-
 arch/ia64/sn/kernel/xpc_main.c    |   64 +++++++---
 include/asm-ia64/break.h          |    4 
 include/asm-ia64/kprobes.h        |    1 
 include/asm-ia64/sn/xpc.h         |    2 
 19 files changed, 362 insertions(+), 152 deletions(-)

bibo,mao:
      [IA64] kprobe clears qp bits for special instructions

Dean Nelson:
      [IA64] fix possible XPC deadlock when disconnecting

Horms:
      [IA64] CONFIG_KEXEC/CONFIG_CRASH_DUMP permutations
      [IA64] Kexec/Kdump: honour non-zero crashkernel offset.
      [IA64] kexec/kdump: tidy up declaration of relocate_new_kernel_t

Jack Steiner:
      [IA64] - Reduce overhead of FP exception logging messages

Jay Lan:
      [IA64] Do not call SN_SAL_SET_CPU_NUMBER twice on cpu 0

Tony Luck:
      [IA64] s/termios/ktermios/ in simserial.c
      [IA64] fix arch/ia64/mm/contig.c:235: warning: unused variable `nid'
      [IA64] Take defensive stance on ia64_pal_get_brand_info()
      [IA64] enable trap code on slot 1

^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (77 preceding siblings ...)
  2006-12-13  2:04 ` Luck, Tony
@ 2006-12-13 19:11 ` Luck, Tony
  2006-12-13 21:58 ` Luck, Tony
                   ` (58 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-12-13 19:11 UTC (permalink / raw)
  To: linux-ia64

> Tony Luck:
>      [IA64] enable trap code on slot 1

Oops ... this patch really belongs to Bibo Mao.  I must have goofed in
git when I added the teeny comment to include/asm-ia64/break.h to note
that __IA64_BREAK_KPROBE uses the whole range 0x81000-0x81fff of break
numbers and forgot to use "--author" when re-committing.  99% of this
patch belongs to Bibo.  Sorry.

-Tony

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (78 preceding siblings ...)
  2006-12-13 19:11 ` Luck, Tony
@ 2006-12-13 21:58 ` Luck, Tony
  2007-02-07  0:55 ` Luck, Tony
                   ` (57 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2006-12-13 21:58 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

Quick fix for lots of warnings and build errors in infiniband.

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

or more likely to work ... git1.kernel.org seems to have given up tracking
altogether, git2.kernel.org is running way behind master.kernel.org

	master.kernel.org:/home/ftp/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 include/asm-ia64/pci.h         |    3 ---
 include/asm-ia64/scatterlist.h |    3 +++
 2 files changed, 3 insertions(+), 3 deletions(-)

Tony Luck:
      [IA64] Move sg_dma_{len,address} from pci.h to scatterlist.h

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (79 preceding siblings ...)
  2006-12-13 21:58 ` Luck, Tony
@ 2007-02-07  0:55 ` Luck, Tony
  2007-03-07  0:35 ` Luck, Tony
                   ` (56 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-02-07  0:55 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

[include/asm-x86_64/swiotlb.h and arch/x86_64/kernel/pci-swiotlb.c
 were touched while cleaning up some ia64 stuff in the shared lib/swiotlb.c
 Andi Kleen is OK with the changes].

Thanks!

-Tony

 arch/ia64/Kconfig                |    9 -
 arch/ia64/hp/common/hwsw_iommu.c |    4 
 arch/ia64/kernel/crash.c         |   16 +-
 arch/ia64/kernel/crash_dump.c    |    3 
 arch/ia64/kernel/efi.c           |    2 
 arch/ia64/kernel/entry.S         |    2 
 arch/ia64/kernel/iosapic.c       |    5 
 arch/ia64/kernel/machine_kexec.c |   19 --
 arch/ia64/kernel/process.c       |   16 ++
 arch/ia64/kernel/ptrace.c        |   14 -
 arch/ia64/kernel/setup.c         |   31 +--
 arch/ia64/kernel/vmlinux.lds.S   |    1 
 arch/ia64/mm/contig.c            |   76 ++++++---
 arch/ia64/mm/discontig.c         |   46 +----
 arch/ia64/mm/init.c              |   38 ++++
 arch/ia64/sn/kernel/huberror.c   |   16 +-
 arch/x86_64/kernel/pci-swiotlb.c |    2 
 include/asm-ia64/dma.h           |    2 
 include/asm-ia64/esi.h           |    1 
 include/asm-ia64/meminit.h       |    3 
 include/asm-ia64/pgalloc.h       |    3 
 include/asm-ia64/swiotlb.h       |    9 +
 include/asm-ia64/thread_info.h   |    4 
 include/asm-ia64/unistd.h        |    4 
 include/asm-x86_64/swiotlb.h     |    8 -
 lib/swiotlb.c                    |  306 ++++++++++++++++++++++++++-------------
 26 files changed, 417 insertions(+), 223 deletions(-)

Alex Williamson:
      [IA64] Clear IRQ affinity when unregistered
      [IA64] remove bogus prototype ia64_esi_init()

Aron Griffis:
      [IA64] use snprintf() on features field of /proc/cpuinfo

Bernhard Walle:
      [IA64] Fix NULL-pointer dereference in ia64_machine_kexec()

bibo,mao:
      [IA64] enable singlestep on system call
      [IA64] find thread for user rbs address

Bob Picco:
      [IA64] register memory ranges in a consistent manner
      [IA64] clean up sparsemem memory_present call

Fenghua Yu:
      [IA64] Hook up getcpu system call for IA64

George Beshers:
      [IA64] show_mem() for IA64 sparsemem NUMA

Horms:
      [IA64] Zero size /proc/vmcore on ia64
      [IA64] kexec: typo in the saved_max_pfn description in contig.c
      [IA64] kexec: Minor enhancement to includes in crash.c
      [IA64] kexec: Remove inline declaration of efi_get_pal_addr()
      [IA64] add newline to PAL-code warning message
      [IA64] kexec: Move machine_shutdown from machine_kexec.c to process.c

Jan Beulich:
      [IA64] Enable SWIOTLB only when needed
      [IA64] missing exports hwsw_sync_...
      [IA64] swiotlb bug fixes
      [IA64] make swiotlb use bus_to_virt/virt_to_bus
      [IA64] swiotlb cleanup
      [IA64] swiotlb abstraction (e.g. for Xen)

Kirill Korotaev:
      [IA64] alignment bug in ldscript
      [IA64] virt_to_page() can be called with NULL arg

Len Brown:
      [IA64] fix ACPI Kconfig issues

Magnus Damm:
      [IA64] kexec: Fix CONFIG_SMP=n compilation

Russ Anderson:
      [IA64-SGI] Check for TIO errors on shub2 Altix

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (80 preceding siblings ...)
  2007-02-07  0:55 ` Luck, Tony
@ 2007-03-07  0:35 ` Luck, Tony
  2007-03-07  0:54 ` Luck, Tony
                   ` (55 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-03-07  0:35 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.  The big change to swiotlb.c
is backing out a change from Jan to make his life easier with Xen, but
is "more than ugly" according to Christoph (and having re-read it, I
have to agree with him).

Thanks!

-Tony

 include/asm-ia64/swiotlb.h   |    9 --
 arch/ia64/ia32/sys_ia32.c    |   10 +-
 arch/ia64/kernel/efi.c       |   36 ++++++++
 arch/ia64/kernel/perfmon.c   |   11 +-
 arch/ia64/kernel/setup.c     |   30 +++++++
 arch/ia64/lib/Makefile       |    3 
 arch/ia64/mm/contig.c        |    5 -
 arch/ia64/mm/discontig.c     |    6 -
 include/asm-ia64/meminit.h   |    6 +
 include/asm-ia64/resource.h  |    1 
 include/asm-x86_64/swiotlb.h |    1 
 lib/swiotlb.c                |  184 ++++++++-----------------------------------
 12 files changed, 121 insertions(+), 181 deletions(-)

Alexandr Andreev:
      [IA64] sync compat getdents

Horms:
      [IA64] point saved_max_pfn to the max_pfn of the entire system

Lee Schermerhorn:
      [IA64] always build arch/ia64/lib/xor.o

Magnus Damm:
      [IA64] kexec: Use EFI_LOADER_DATA for ELF core header

Nick Piggin:
      [IA64] permon use-after-free fix

schwab@suse.de:
      [IA64] Remove stack hard limit on ia64

Tony Luck:
      Revert "[IA64] swiotlb abstraction (e.g. for Xen)"

^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (81 preceding siblings ...)
  2007-03-07  0:35 ` Luck, Tony
@ 2007-03-07  0:54 ` Luck, Tony
  2007-03-08  1:09 ` Luck, Tony
                   ` (54 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-03-07  0:54 UTC (permalink / raw)
  To: linux-ia64

 include/asm-ia64/swiotlb.h   |    9 --
 arch/ia64/ia32/sys_ia32.c    |   10 +-
 arch/ia64/kernel/efi.c       |   36 ++++++++
 arch/ia64/kernel/perfmon.c   |   11 +-
 arch/ia64/kernel/setup.c     |   30 +++++++
 arch/ia64/lib/Makefile       |    3 
 arch/ia64/mm/contig.c        |    5 -
 arch/ia64/mm/discontig.c     |    6 -
 include/asm-ia64/meminit.h   |    6 +
 include/asm-ia64/resource.h  |    1 
 include/asm-x86_64/swiotlb.h |    1 
 lib/swiotlb.c                |  184 ++++++++-----------------------------------
 12 files changed, 121 insertions(+), 181 deletions(-)

I'll be merging more of my backlog of fixes and sending
them up to Linus too ... so don't panic if your patch
wasn't in this bundle).

-Tony

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (82 preceding siblings ...)
  2007-03-07  0:54 ` Luck, Tony
@ 2007-03-08  1:09 ` Luck, Tony
  2007-03-10  1:02 ` Luck, Tony
                   ` (53 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-03-08  1:09 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

A few more ia64 fixes.

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/kernel/asm-offsets.c |    1 
 arch/ia64/kernel/efi.c         |   10 +--
 arch/ia64/kernel/fsys.S        |  105 +++++++++++++++++++++++++++++++++++++++++
 arch/ia64/kernel/iosapic.c     |    8 ++-
 arch/ia64/kernel/setup.c       |    2 
 arch/ia64/sn/kernel/irq.c      |   14 +++++
 6 files changed, 130 insertions(+), 10 deletions(-)

Fenghua Yu:
      [IA64] fsys_getcpu for IA64

Horms:
      [IA64] remove duplicate declaration of efi_initialize_iomem_resources

KAMEZAWA Hiroyuki:
      [IA64] fix NULL pointer in ia64/irq_chip-mask/unmask function

Tony Luck:
      [IA64] Pick highest possible saved_max_pfn for crash_dump

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (83 preceding siblings ...)
  2007-03-08  1:09 ` Luck, Tony
@ 2007-03-10  1:02 ` Luck, Tony
  2007-03-20 22:11 ` Luck, Tony
                   ` (52 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-03-10  1:02 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/configs/tiger_defconfig |  263 ++++++++++++++++++++++-------
 arch/ia64/configs/zx1_defconfig   |  344 +++++++++++++++++++++++++++++---------
 arch/ia64/defconfig               |  321 ++++++++++++++++++++++++++---------
 arch/ia64/kernel/crash.c          |   10 -
 arch/ia64/kernel/efi.c            |    2 
 arch/ia64/kernel/mca.c            |    8 
 arch/ia64/kernel/mca_drv.c        |   65 ++++---
 arch/ia64/kernel/ptrace.c         |    1 
 include/asm-ia64/kexec.h          |    1 
 include/asm-ia64/mca.h            |    2 
 include/asm-ia64/pal.h            |    1 
 include/asm-ia64/pci.h            |    3 
 include/asm-ia64/sal.h            |    5 
 include/asm-ia64/unwind.h         |    2 
 14 files changed, 783 insertions(+), 245 deletions(-)

Akiyama, Nobuyuki (1):
      [IA64] add missing syscall trace clear

Horms (2):
      [IA64] whitespace fixes for include/asm-ia64/sal.h
      [IA64] put kdump_find_rsvd_region in __init

Keith Owens (1):
      [IA64] Remove sparse warning from unwind code

Russ Anderson (2):
      [IA64] Proper handling of TLB errors from duplicate itr.d dropins
      [IA64] Cache error recovery

Simon Horman (2):
      [IA64] kexec: declare ia64_mca_pal_base in mca.h rather than kexec.h
      [IA64] Cleanup in crash.c

Tony Luck (1):
      [IA64] refresh config files

Zhang, Yanmin (1):
      [IA64] pci_get_legacy_ide_irq should return irq (not GSI)

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (84 preceding siblings ...)
  2007-03-10  1:02 ` Luck, Tony
@ 2007-03-20 22:11 ` Luck, Tony
  2007-03-30  2:30 ` Luck, Tony
                   ` (51 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-03-20 22:11 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/kernel/crash.c      |    2 +-
 arch/ia64/kernel/setup.c      |   22 +++++++++++++++-------
 arch/ia64/mm/contig.c         |   30 ++++++------------------------
 arch/ia64/mm/discontig.c      |    4 +---
 arch/ia64/mm/init.c           |   16 ++++++++++++++++
 arch/ia64/sn/kernel/io_init.c |   12 ++++++++++--
 arch/ia64/sn/kernel/setup.c   |    6 +++---
 include/asm-ia64/meminit.h    |    1 +
 8 files changed, 53 insertions(+), 40 deletions(-)

Bernhard Walle (1):
      [IA64] Fix wrong /proc/iomem on SGI Altix

Jack Steiner (1):
      [IA64] Fix get_model_name() for mixed cpu type systems

Jay Lan (1):
      [IA64] Fix typo/thinko in crash.c

John Keller (1):
      [IA64] Altix: ioremap vga_console_iobase

Zou Nan hai (1):
      [IA64] min_low_pfn and max_low_pfn calculation fix

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (85 preceding siblings ...)
  2007-03-20 22:11 ` Luck, Tony
@ 2007-03-30  2:30 ` Luck, Tony
  2007-04-10 20:58 ` Luck, Tony
                   ` (50 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-03-30  2:30 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/kernel/msi_ia64.c |    2 +-
 arch/ia64/kernel/smpboot.c  |   17 ++++++++++++++++-
 arch/ia64/mm/init.c         |    2 +-
 arch/ia64/pci/pci.c         |    1 -
 4 files changed, 18 insertions(+), 4 deletions(-)

Jack Steiner (1):
      [IA64] Speed up boot - skip unnecessary clock calibration

KAMEZAWA Hiroyuki (1):
      [IA64] bugfix stack layout upside-down

Kenji Kaneshige (1):
      [IA64] Fix possible invalid memory access in ia64_setup_msi_irq()

Tony Luck (1):
      [IA64] Fix arch/ia64/pci/pci.c:571: warning: `return' with a value

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (86 preceding siblings ...)
  2007-03-30  2:30 ` Luck, Tony
@ 2007-04-10 20:58 ` Luck, Tony
  2007-05-07 16:54 ` Luck, Tony
                   ` (49 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-04-10 20:58 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/kernel/msi_ia64.c          |    4 ++--
 arch/ia64/kernel/setup.c             |    2 +-
 arch/ia64/sn/kernel/bte_error.c      |    6 +++---
 arch/ia64/sn/pci/pcibr/pcibr_dma.c   |    8 ++++++--
 include/asm-ia64/sn/pcibr_provider.h |    5 +++--
 5 files changed, 15 insertions(+), 10 deletions(-)

Ishimatsu Yasuaki (1):
      [IA64] Fix wrong assumption about irq and vector in msi_ia64.c

Mike Habeck (1):
      [IA64] SGI Altix : fix pcibr_dmamap_ate32() bug

Russ Anderson (1):
      [IA64] BTE error timer fix

Venki Pallipadi (1):
      [IA64] Fix CPU freq displayed in /proc/cpuinfo

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (87 preceding siblings ...)
  2007-04-10 20:58 ` Luck, Tony
@ 2007-05-07 16:54 ` Luck, Tony
  2007-05-08  1:13 ` Zou Nan hai
                   ` (48 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-05-07 16:54 UTC (permalink / raw)
  To: linux-ia64

[Repost ... this seems to have been eaten by the internet, it
didn't show up on the mailing list either].

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git
release

This will update the files shown below.

Thanks!

-Tony

 Documentation/ia64/aliasing-test.c |  247 ++++++++
 Documentation/ia64/aliasing.txt    |   71 +-
 Documentation/ia64/err_inject.txt  | 1070
++++++++++++++++++++++++++++++++++++-
 arch/ia64/Kconfig                  |   10 
 arch/ia64/defconfig                |    1 
 arch/ia64/kernel/Makefile          |    1 
 arch/ia64/kernel/efi.c             |   46 +
 arch/ia64/kernel/entry.S           |    7 
 arch/ia64/kernel/err_inject.c      |  293 ++++++++++
 arch/ia64/kernel/ivt.S             |   19 
 arch/ia64/kernel/mca_asm.S         |   24 
 arch/ia64/kernel/patch.c           |   20 
 arch/ia64/kernel/setup.c           |    7 
 arch/ia64/kernel/vmlinux.lds.S     |    7 
 arch/ia64/mm/init.c                |   11 
 arch/ia64/mm/ioremap.c             |   86 ++
 arch/ia64/pci/pci.c                |    2 
 include/asm-ia64/asmmacro.h        |   10 
 include/asm-ia64/io.h              |    6 
 include/asm-ia64/kregs.h           |    3 
 include/asm-ia64/pal.h             |   33 +
 include/asm-ia64/patch.h           |    1 
 include/asm-ia64/processor.h       |    1 
 include/asm-ia64/sections.h        |    1 
 24 files changed, 1866 insertions(+), 111 deletions(-)

Bjorn Helgaas (5):
      [IA64] rename ioremap variables to match i386
      [IA64] make ioremap avoid unsupported attributes
      [IA64] allow WB /sys/.../legacy_mem mmaps
      [IA64] fail mmaps that span areas with incompatible attributes
      [IA64] update memory attribute aliasing documentation & test cases

Fenghua Yu (5):
      [IA64] Itanium MC Error Injection Tool: Kernel configuration
      [IA64] Itanium MC Error Injection Tool: Doc and sample application
      [IA64] Itanium MC Error Injection Tool: Driver sysfs interface
      [IA64] Itanium MC Error Injection Tool: Makefile changes
      [IA64] Itanium MC Error Injection Tool: pal_mc_error_inject()
interface

Kenneth W Chen (2):
      [IA64] remove per-cpu ia64_phys_stacked_size_p8
      [IA64] relax per-cpu TLB requirement to DTC

Tony Luck (1):
      [IA64] Fix example error injection program

^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (88 preceding siblings ...)
  2007-05-07 16:54 ` Luck, Tony
@ 2007-05-08  1:13 ` Zou Nan hai
  2007-05-08  7:26 ` Simon Horman
                   ` (47 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Zou Nan hai @ 2007-05-08  1:13 UTC (permalink / raw)
  To: linux-ia64

On Tue, 2007-05-08 at 00:54, Luck, Tony wrote:
> [Repost ... this seems to have been eaten by the internet, it
> didn't show up on the mailing list either].
> 
> Hi Linus,
> 
> please pull from:
> 
>        
> git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git
> release
> 
> This will update the files shown below.
> 
> Thanks!
> 
> -Tony
> 
>  Documentation/ia64/aliasing-test.c |  247 ++++++++
>  Documentation/ia64/aliasing.txt    |   71 +-
>  Documentation/ia64/err_inject.txt  | 1070
> ++++++++++++++++++++++++++++++++++++-
>  arch/ia64/Kconfig                  |   10 
>  arch/ia64/defconfig                |    1 
>  arch/ia64/kernel/Makefile          |    1 
>  arch/ia64/kernel/efi.c             |   46 +
>  arch/ia64/kernel/entry.S           |    7 
>  arch/ia64/kernel/err_inject.c      |  293 ++++++++++
>  arch/ia64/kernel/ivt.S             |   19 
>  arch/ia64/kernel/mca_asm.S         |   24 
>  arch/ia64/kernel/patch.c           |   20 
>  arch/ia64/kernel/setup.c           |    7 
>  arch/ia64/kernel/vmlinux.lds.S     |    7 
>  arch/ia64/mm/init.c                |   11 
>  arch/ia64/mm/ioremap.c             |   86 ++
>  arch/ia64/pci/pci.c                |    2 
>  include/asm-ia64/asmmacro.h        |   10 
>  include/asm-ia64/io.h              |    6 
>  include/asm-ia64/kregs.h           |    3 
>  include/asm-ia64/pal.h             |   33 +
>  include/asm-ia64/patch.h           |    1 
>  include/asm-ia64/processor.h       |    1 
>  include/asm-ia64/sections.h        |    1 
>  24 files changed, 1866 insertions(+), 111 deletions(-)
> 
> Bjorn Helgaas (5):
>       [IA64] rename ioremap variables to match i386
>       [IA64] make ioremap avoid unsupported attributes
>       [IA64] allow WB /sys/.../legacy_mem mmaps
>       [IA64] fail mmaps that span areas with incompatible attributes
>       [IA64] update memory attribute aliasing documentation & test
> cases
> 
> Fenghua Yu (5):
>       [IA64] Itanium MC Error Injection Tool: Kernel configuration
>       [IA64] Itanium MC Error Injection Tool: Doc and sample
> application
>       [IA64] Itanium MC Error Injection Tool: Driver sysfs interface
>       [IA64] Itanium MC Error Injection Tool: Makefile changes
>       [IA64] Itanium MC Error Injection Tool: pal_mc_error_inject()
> interface
> 
> Kenneth W Chen (2):
>       [IA64] remove per-cpu ia64_phys_stacked_size_p8
>       [IA64] relax per-cpu TLB requirement to DTC
> 

Hi Tony,
	If the per-cpu TR entry is removed, 
	I think the relocate_kernel.S also need a fix to remove the 	per-cpu TR
purge code.
Thanks
Zou Nan hai 

> Tony Luck (1):
>       [IA64] Fix example error injection program
> -
> To unsubscribe from this list: send the line "unsubscribe linux-ia64"
> in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (89 preceding siblings ...)
  2007-05-08  1:13 ` Zou Nan hai
@ 2007-05-08  7:26 ` Simon Horman
  2007-05-09  2:41 ` Zou Nan hai
                   ` (46 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Simon Horman @ 2007-05-08  7:26 UTC (permalink / raw)
  To: linux-ia64

On Tue, May 08, 2007 at 09:13:18AM +0800, Zou Nan hai wrote:
> 
> Hi Tony,
> 	If the per-cpu TR entry is removed, 
> 	I think the relocate_kernel.S also need a fix to remove the 	per-cpu TR
> purge code.

Just to clarify, is this what you are thinking about?
If so, it seems sensible to me.

Index: linux-2.6-ia64/arch/ia64/kernel/relocate_kernel.S
=================================--- linux-2.6-ia64.orig/arch/ia64/kernel/relocate_kernel.S	2007-05-08 16:15:05.000000000 +0900
+++ linux-2.6-ia64/arch/ia64/kernel/relocate_kernel.S	2007-05-08 16:25:23.000000000 +0900
@@ -104,15 +104,6 @@ GLOBAL_ENTRY(relocate_new_kernel)
         srlz.i
         ;;
 
-	// purge TR entry for percpu data
-        movl r16=PERCPU_ADDR
-        mov r18=PERCPU_PAGE_SHIFT<<2
-        ;;
-        ptr.d r16,r18
-        ;;
-        srlz.d
-	;;
-
         // purge TR entry for pal code
         mov r16=in3
         mov r18=IA64_GRANULE_SHIFT<<2


^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (90 preceding siblings ...)
  2007-05-08  7:26 ` Simon Horman
@ 2007-05-09  2:41 ` Zou Nan hai
  2007-05-09 20:28 ` Luck, Tony
                   ` (45 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Zou Nan hai @ 2007-05-09  2:41 UTC (permalink / raw)
  To: linux-ia64

On Tue, 2007-05-08 at 15:26, Simon Horman wrote:
> On Tue, May 08, 2007 at 09:13:18AM +0800, Zou Nan hai wrote:
> > 
> > Hi Tony,
> >       If the per-cpu TR entry is removed, 
> >       I think the relocate_kernel.S also need a fix to remove the
> per-cpu TR
> > purge code.
> 
> Just to clarify, is this what you are thinking about?
> If so, it seems sensible to me.
> 
> Index: linux-2.6-ia64/arch/ia64/kernel/relocate_kernel.S
> =================================> --- linux-2.6-ia64.orig/arch/ia64/kernel/relocate_kernel.S     
> 2007-05-08 16:15:05.000000000 +0900
> +++ linux-2.6-ia64/arch/ia64/kernel/relocate_kernel.S   2007-05-08
> 16:25:23.000000000 +0900
> @@ -104,15 +104,6 @@ GLOBAL_ENTRY(relocate_new_kernel)
>          srlz.i
>          ;;
>  
> -       // purge TR entry for percpu data
> -        movl r16=PERCPU_ADDR
> -        mov r18=PERCPU_PAGE_SHIFT<<2
> -        ;;
> -        ptr.d r16,r18
> -        ;;
> -        srlz.d
> -       ;;
> -
>          // purge TR entry for pal code
>          mov r16=in3
>          mov r18=IA64_GRANULE_SHIFT<<2
> 

Yes that is what I think. 

Thanks
Zou Nan hai

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (91 preceding siblings ...)
  2007-05-09  2:41 ` Zou Nan hai
@ 2007-05-09 20:28 ` Luck, Tony
  2007-05-11 18:09 ` Luck, Tony
                   ` (44 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-05-09 20:28 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

[Possible duplicate ... but this is the second "please pull" that I've
sent
 that hasn't shown up on the linux-ia64 mailing list, so I assume that
the
 copy to Linus got lost too ... I need to re-look at my outgoing e-mail
 configuration to see what I broke]

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git
release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/ia32/ia32_entry.S        |   39 --------------------
 arch/ia64/ia32/ia32_signal.c       |   65
+++++++--------------------------
 arch/ia64/kernel/entry.S           |   30 +--------------
 arch/ia64/kernel/iosapic.c         |    2 -
 arch/ia64/kernel/irq_ia64.c        |   27 +++++++++++---
 arch/ia64/kernel/process.c         |    8 ++--
 arch/ia64/kernel/relocate_kernel.S |   11 -----
 arch/ia64/kernel/setup.c           |    2 -
 arch/ia64/kernel/sigframe.h        |    2 -
 arch/ia64/kernel/signal.c          |   71
+++++++++++--------------------------
 arch/ia64/kernel/smp.c             |   68
+++++++++++++++++++++++++++++++++++
 arch/ia64/kernel/traps.c           |    6 +--
 arch/ia64/kernel/unwind.c          |    9 ++--
 arch/ia64/mm/tlb.c                 |    6 +--
 arch/ia64/sn/kernel/irq.c          |   58
++++++++++++++++++++++--------
 arch/ia64/sn/kernel/sn2/sn2_smp.c  |   65
+++++++++++++++++++++++++++++++--
 drivers/char/mmtimer.c             |    4 --
 include/asm-ia64/hw_irq.h          |    1 
 include/asm-ia64/iosapic.h         |    2 -
 include/asm-ia64/sn/sn_sal.h       |    1 
 include/asm-ia64/thread_info.h     |    4 +-
 include/asm-ia64/tlbflush.h        |   11 +++++
 include/asm-ia64/unistd.h          |    5 ++
 23 files changed, 276 insertions(+), 221 deletions(-)

Alexey Dobriyan (1):
      [IA64] Add TIF_RESTORE_SIGMASK

Alexey Kuznetsov (1):
      [IA64] wire up pselect, ppoll

Jack Steiner (1):
      [IA64] Optional method to purge the TLB on SN systems

John Keller (1):
      [IA64] - Altix: hotplug after intr redirect can crash system

Kirill Korotaev (1):
      [IA64] unwind did not work for processes born with CLONE_STOPPED

Markus F.X.J. Oberhumer (1):
      [IA64] fix stack alignment for ia32 signal handlers

Milind Arun Choudhary (1):
      [IA64] SPIN_LOCK_UNLOCKED macro cleanup in arch/ia64

Siddha, Suresh B (1):
      [IA64] save and restore cpus_allowed in cpu_idle_wait

Tony Luck (2):
      [IA64] Fix some section mismatch errors
      [IA64] Removal of percpu TR cleanup in kexec code

vignesh babu (1):
      [IA64-SN2][KJ] mmtimer.c-kzalloc

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (92 preceding siblings ...)
  2007-05-09 20:28 ` Luck, Tony
@ 2007-05-11 18:09 ` Luck, Tony
  2007-05-16 17:45 ` Luck, Tony
                   ` (43 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-05-11 18:09 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

The change to kernel/irq/proc.c just adds an arch hook to allow
validation of the new cpumask.  SGI sn2 systems can only select
a single target processor. Andrew Morton came up with the idiom
used there that avoids yet another ARCH_HAS_... define.

Thanks!

-Tony

 arch/ia64/Kconfig                   |    4 +
 arch/ia64/hp/common/hwsw_iommu.c    |    2 
 arch/ia64/kernel/entry.S            |    2 
 arch/ia64/kernel/err_inject.c       |    2 
 arch/ia64/kernel/irq.c              |   11 ++++
 arch/ia64/kernel/kprobes.c          |   12 +++--
 arch/ia64/kernel/machvec.c          |    2 
 arch/ia64/kernel/mca.c              |    2 
 arch/ia64/mm/contig.c               |    2 
 arch/ia64/mm/discontig.c            |    2 
 arch/ia64/mm/init.c                 |   51 ----------------------
 arch/ia64/sn/kernel/io_common.c     |    2 
 arch/ia64/sn/kernel/xpc_partition.c |    2 
 arch/ia64/sn/kernel/xpnet.c         |    4 -
 drivers/char/snsc_event.c           |    2 
 drivers/pci/hotplug/sgi_hotplug.c   |   36 +++++++--------
 include/asm-ia64/irq.h              |    6 ++
 include/asm-ia64/kprobes.h          |    4 +
 include/asm-ia64/pgalloc.h          |   82 +++++++-----------------------------
 include/asm-ia64/unistd.h           |    4 +
 kernel/irq/proc.c                   |    7 +++
 21 files changed, 89 insertions(+), 152 deletions(-)

Anil S Keshavamurthy (1):
      [IA64] fix Kprobes reentrancy

Christoph Lameter (1):
      [IA64] Quicklist support for IA64

John Keller (1):
      [IA64] SN: validate smp_affinity mask on intr redirect

Tony Luck (7):
      [IA64] typo s/kenrel/kernel/
      [IA64] Fix warnings resulting from type-checking in dev_dbg()
      [IA64] Wire up epoll_pwait and utimensat
      [IA64] more warning cleanups
      [IA64] Fix - Section mismatch: reference to .init.data:mvec_name
      [IA64] mca.c:121: warning: 'cpe_poll_timer' defined but not used
      [IA64] drivers/char/snsc_event.c:206: warning: unused variable `p'

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (93 preceding siblings ...)
  2007-05-11 18:09 ` Luck, Tony
@ 2007-05-16 17:45 ` Luck, Tony
  2007-05-22 20:13 ` Luck, Tony
                   ` (42 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-05-16 17:45 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below (most of which are part of Simon Arlott's
spelling patch which accounts for 30 files, 75 insertions, 75 deletions).

Thanks!

-Tony

 arch/ia64/kernel/acpi.c             |    2 -
 arch/ia64/kernel/crash.c            |   24 ++++++++++++++-------
 arch/ia64/kernel/entry.S            |    3 ++
 arch/ia64/kernel/irq.c              |    6 ++---
 arch/ia64/kernel/irq_lsapic.c       |    2 -
 arch/ia64/kernel/kprobes.c          |   15 +++----------
 arch/ia64/kernel/mca.c              |    5 +++-
 arch/ia64/kernel/mca_drv.c          |    4 +--
 arch/ia64/kernel/module.c           |    2 -
 arch/ia64/kernel/perfmon.c          |   18 +++++++--------
 arch/ia64/kernel/perfmon_mckinley.h |    2 -
 arch/ia64/kernel/sal.c              |    2 -
 arch/ia64/kernel/salinfo.c          |    2 -
 arch/ia64/kernel/setup.c            |    6 ++---
 arch/ia64/kernel/smp.c              |   12 +++++-----
 arch/ia64/kernel/smpboot.c          |    6 ++---
 arch/ia64/kernel/time.c             |    4 +--
 arch/ia64/kernel/traps.c            |    2 -
 arch/ia64/kernel/unwind.c           |    2 -
 arch/ia64/mm/discontig.c            |    2 -
 arch/ia64/mm/fault.c                |   41 ++++++++++++------------------------
 arch/ia64/sn/kernel/bte.c           |   12 +++++-----
 arch/ia64/sn/kernel/bte_error.c     |    4 +--
 arch/ia64/sn/kernel/io_common.c     |    2 -
 arch/ia64/sn/kernel/setup.c         |    2 -
 arch/ia64/sn/kernel/sn2/sn2_smp.c   |    2 -
 arch/ia64/sn/kernel/xpc_channel.c   |    8 +++----
 arch/ia64/sn/kernel/xpnet.c         |    2 -
 arch/ia64/sn/pci/pci_dma.c          |    8 +++----
 arch/ia64/sn/pci/pcibr/pcibr_ate.c  |    6 ++---
 arch/ia64/sn/pci/pcibr/pcibr_dma.c  |    2 -
 arch/ia64/sn/pci/tioca_provider.c   |    6 ++---
 arch/ia64/sn/pci/tioce_provider.c   |   16 +++++++-------
 include/asm-ia64/kdebug.h           |   16 +++++++++++---
 include/asm-ia64/kprobes.h          |    1 
 include/asm-ia64/unistd.h           |    5 +++-
 36 files changed, 131 insertions(+), 123 deletions(-)

Christoph Hellwig (1):
      [IA64] optimize pagefaults a little

Jay Lan (1):
      [IA64] kdump on INIT needs multi-nodes sync-up (v.2)

Martin Michlmayr (1):
      [IA64] Fix section conflict of ia64_mlogbuf_finish

Simon Arlott (1):
      [IA64] spelling fixes: arch/ia64/

Tony Luck (2):
      [IA64] wire up {signal,timer,event}fd syscalls
      [IA64] s/scalibility/scalability/

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (94 preceding siblings ...)
  2007-05-16 17:45 ` Luck, Tony
@ 2007-05-22 20:13 ` Luck, Tony
  2007-05-24 23:41 ` Luck, Tony
                   ` (41 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-05-22 20:13 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/kernel/process.c  |    5 +++++
 arch/ia64/kernel/unwind.c   |   21 ++++++++++++++-------
 arch/ia64/pci/pci.c         |   11 +++++++----
 arch/ia64/sn/kernel/setup.c |    2 +-
 include/asm-ia64/unistd.h   |   13 +++++++++++++
 5 files changed, 40 insertions(+), 12 deletions(-)

Kenji Kaneshige (1):
      [IA64] fix kmalloc(0) in arch/ia64/pci/pci.c

Robin Holt (2):
      [IA64] Improve unwind checking.
      [IA64] Only unwind non-running tasks.

Tony Luck (2):
      [IA64] Fix bogus messages about system calls not implemented.
      [IA64] Yet another section mismatch warning

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (95 preceding siblings ...)
  2007-05-22 20:13 ` Luck, Tony
@ 2007-05-24 23:41 ` Luck, Tony
  2007-06-27 15:45 ` Luck, Tony
                   ` (40 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-05-24 23:41 UTC (permalink / raw)
  To: linux-ia64

From: "Luck, Tony" <tony.luck@intel.com>
To: torvalds@linux-foundation.org
cc: linux-ia64@vger.kernel.org
Subject: git pull on ia64 linux tree
Reply-to: tony.luck@intel.com

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/kernel/acpi-processor.c |    2 +-
 arch/ia64/kernel/acpi.c           |    3 ++-
 arch/ia64/kernel/smpboot.c        |    4 ++--
 include/asm-ia64/acpi.h           |    7 ++-----
 4 files changed, 7 insertions(+), 9 deletions(-)

Tony Luck (2):
      [IA64] start_secondary() and smp_callin() should be __cpuinit
      [IA64] acpi_get_sysname() should be __init

Venki Pallipadi (2):
      [IA64] Fix using uninitialized data in _PDC setup
      [IA64] Cleanup acpi header to reuse the generic _PDC defines

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (96 preceding siblings ...)
  2007-05-24 23:41 ` Luck, Tony
@ 2007-06-27 15:45 ` Luck, Tony
  2007-07-12  0:04 ` Luck, Tony
                   ` (39 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-06-27 15:45 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/kernel/time.c                 |    1 -
 arch/ia64/kernel/unwind.c               |   16 +++++++++++-----
 arch/ia64/mm/hugetlbpage.c              |    3 ++-
 arch/ia64/sn/kernel/xp_nofault.S        |    3 ++-
 arch/ia64/sn/pci/pcibr/pcibr_provider.c |    7 ++++---
 arch/ia64/sn/pci/tioca_provider.c       |    4 +++-
 arch/ia64/sn/pci/tioce_provider.c       |    4 +++-
 include/asm-ia64/sn/sn_sal.h            |    4 ++--
 8 files changed, 27 insertions(+), 15 deletions(-)

Dean Nelson (1):
      [IA64] change sh_change_coherence oemcall to use nolock

Jes Sorensen (1):
      [IA64] Make SN2 PCI code use ioremap rather than manually mangle the address

Keith Owens (1):
      [IA64] Correct unwind validation code

MUNEDA Takahiro (1):
      [IA64] remove duplicate header include line

Russ Anderson (1):
      [IA64] Force error to surface in nofault code

vignesh babu (1):
      [IA64] is_power_of_2-ia64/mm/hugetlbpage.c

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (97 preceding siblings ...)
  2007-06-27 15:45 ` Luck, Tony
@ 2007-07-12  0:04 ` Luck, Tony
  2007-07-17 16:35 ` Luck, Tony
                   ` (38 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-07-12  0:04 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 Documentation/ia64/aliasing-test.c      |   26 ++++++++---
 Documentation/ia64/aliasing.txt         |   12 +++++
 arch/ia64/kernel/gate.S                 |    1 
 arch/ia64/kernel/mca.c                  |   60 +++++++++++++++++++++++---
 arch/ia64/kernel/mca_asm.S              |   12 -----
 arch/ia64/kernel/mca_drv_asm.S          |    6 ++
 arch/ia64/kernel/process.c              |    3 -
 arch/ia64/mm/tlb.c                      |    2 
 arch/ia64/pci/pci.c                     |   22 +++++++--
 arch/ia64/sn/kernel/io_acpi_init.c      |   17 +++----
 arch/ia64/sn/kernel/io_init.c           |   20 +++++++-
 arch/ia64/sn/kernel/tiocx.c             |    2 
 arch/ia64/sn/pci/pcibr/pcibr_provider.c |    2 
 drivers/pci/rom.c                       |   73 +++++++++++++++++++-------------
 include/asm-ia64/mca.h                  |    1 
 include/asm-ia64/sn/sn_sal.h            |   20 ++++++++
 include/linux/pci.h                     |    1 
 17 files changed, 203 insertions(+), 77 deletions(-)

Alex Chiang (1):
      [IA64] prevent MCA when performing MMIO mmap to PCI config space

Christian Kandeler (1):
      [IA64] Stop bit for brl instruction

Dean Nelson (1):
      [IA64] add sn_register_pmi_handler oemcall

Jes Sorensen (1):
      [IA64] silence GCC ia64 unused variable warnings

John Keller (1):
      [IA64] SN: Correct ROM resource length for BIOS copy

Russ Anderson (1):
      [IA64] Support multiple CPUs going through OS_MCA

Tony Luck (1):
      [IA64] Don't set psr.ic and psr.i simultaneously

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (98 preceding siblings ...)
  2007-07-12  0:04 ` Luck, Tony
@ 2007-07-17 16:35 ` Luck, Tony
  2007-07-20 18:54 ` Luck, Tony
                   ` (37 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-07-17 16:35 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/hp/common/sba_iommu.c     |   20 ++++++++++++++++++--
 arch/ia64/hp/sim/boot/fw-emu.c      |    5 -----
 arch/ia64/hp/sim/simserial.c        |    4 ----
 arch/ia64/kernel/fsys.S             |    4 +++-
 arch/ia64/sn/kernel/sn2/sn_hwperf.c |    3 ++-
 include/asm-ia64/ioctls.h           |    4 ++++
 include/asm-ia64/termbits.h         |    5 ++++-
 include/asm-ia64/termios.h          |    6 ++++--
 8 files changed, 35 insertions(+), 16 deletions(-)

Alan Cox (1):
      [IA64] arbitary speed tty ioctl support

Hidetoshi Seto (1):
      [IA64] ar.itc access must really be after xtime_lock.sequence has been read

Mark Goodwin (1):
      [IA64] correctly count CPU objects in the ia64/sn hwperf interface

Terry Loftin (1):
      [IA64] use machvec=dig on hpzx1 platforms

Tony Luck (1):
      [IA64] Clean away some code inside some non-existent CONFIG ifdefs

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (99 preceding siblings ...)
  2007-07-17 16:35 ` Luck, Tony
@ 2007-07-20 18:54 ` Luck, Tony
  2007-07-20 19:06 ` Linus Torvalds
                   ` (36 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-07-20 18:54 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.  I'm touching a few
non-ia64 files (they are at the bottom of the diffstat) in here
to delete the CONFIG_TIME_INTERPOLATION code that nobody except
ia64 used.

Thanks!

-Tony

 Documentation/time_interpolators.txt  |   40 -
 Documentation/kernel-parameters.txt   |    5 
 arch/ia64/Kconfig                     |    6 
 arch/ia64/configs/bigsur_defconfig    |    2 
 arch/ia64/configs/gensparse_defconfig |    2 
 arch/ia64/configs/sim_defconfig       |    2 
 arch/ia64/configs/sn2_defconfig       |    2 
 arch/ia64/configs/tiger_defconfig     |  322 +++---------
 arch/ia64/configs/zx1_defconfig       |    2 
 arch/ia64/defconfig                   |  338 ++++---------
 arch/ia64/kernel/asm-offsets.c        |   35 -
 arch/ia64/kernel/cyclone.c            |   46 +
 arch/ia64/kernel/entry.S              |    2 
 arch/ia64/kernel/fsys.S               |  179 +++---
 arch/ia64/kernel/fsyscall_gtod_data.h |   23 
 arch/ia64/kernel/iosapic.c            |  872 +++++++++++++++-------------------
 arch/ia64/kernel/irq.c                |    2 
 arch/ia64/kernel/irq_ia64.c           |  391 ++++++++++++---
 arch/ia64/kernel/msi_ia64.c           |   29 -
 arch/ia64/kernel/smpboot.c            |    4 
 arch/ia64/kernel/time.c               |   96 +++
 arch/ia64/sn/kernel/sn2/timer.c       |   29 -
 drivers/acpi/processor_idle.c         |    4 
 drivers/char/hpet.c                   |   70 +-
 include/asm-ia64/hw_irq.h             |   20 
 include/asm-ia64/iosapic.h            |    6 
 include/asm-ia64/irq.h                |    9 
 include/asm-ia64/rwsem.h              |    4 
 include/asm-ia64/unistd.h             |    2 
 include/linux/clocksource.h           |    6 
 include/linux/timex.h                 |   60 --
 kernel/time.c                         |   88 ---
 kernel/time/ntp.c                     |   10 
 kernel/time/timekeeping.c             |    4 
 kernel/timer.c                        |  188 -------
 35 files changed, 1338 insertions(+), 1562 deletions(-)

Bob Picco (1):
      [IA64] remove time interpolator

David Chinner (1):
      [IA64] fallocate system call

Robert P. J. Day (1):
      [IA64] Prevent people from directly including <asm/rwsem.h>.

Tony Luck (2):
      [IA64] refresh some config files for 64K pagesize
      [IA64] Convert to generic timekeeping/clocksource

Yasuaki Ishimatsu (13):
      [IA64] Remove block structure for locking in iosapic.c
      [IA64] Remove duplicated members in iosapic_rte_info
      [IA64] Cleanup lock order in iosapic_register_intr
      [IA64] Use per iosapic lock for indirect iosapic register access
      [IA64] Use dynamic irq for iosapic interrupts
      [IA64] Fix invalid irq vector assumption for iosapic
      [IA64] Check if irq is sharable
      [IA64] Add mapping table between irq and vector
      [IA64] Add support for vector domain
      [IA64] Support irq migration across domain
      [IA64] Enable percpu vector domain for IA64_GENERIC
      [IA64] Enable percpu vector domain for IA64_DIG
      [IA64] Delete iosapic_free_rte()

^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (100 preceding siblings ...)
  2007-07-20 18:54 ` Luck, Tony
@ 2007-07-20 19:06 ` Linus Torvalds
  2007-07-25 21:40 ` Luck, Tony
                   ` (35 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Linus Torvalds @ 2007-07-20 19:06 UTC (permalink / raw)
  To: linux-ia64



On Fri, 20 Jul 2007, Luck, Tony wrote:
> 
> This will update the files shown below.  I'm touching a few
> non-ia64 files (they are at the bottom of the diffstat) in here
> to delete the CONFIG_TIME_INTERPOLATION code that nobody except
> ia64 used.

Thanks. That timekeeping duplication was confusing.

		Linus

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (101 preceding siblings ...)
  2007-07-20 19:06 ` Linus Torvalds
@ 2007-07-25 21:40 ` Luck, Tony
  2007-07-27 23:40 ` Luck, Tony
                   ` (34 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-07-25 21:40 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/ia32/ia32_support.c  |    8 ++--
 arch/ia64/ia32/ia32priv.h      |   12 +++---
 arch/ia64/ia32/sys_ia32.c      |   81 ++++++++++++++++++++---------------------
 arch/ia64/kernel/head.S        |    4 +-
 arch/ia64/kernel/irq_ia64.c    |   26 ++++++-------
 arch/ia64/kernel/machvec.c     |   27 +++++++++----
 arch/ia64/kernel/process.c     |    7 ++-
 arch/ia64/kernel/setup.c       |   11 ++++-
 arch/ia64/kernel/smp.c         |    2 -
 arch/ia64/kernel/smpboot.c     |    6 +--
 arch/ia64/kernel/vmlinux.lds.S |    2 +
 arch/ia64/pci/pci.c            |    2 -
 include/asm-ia64/ia32.h        |    9 ++--
 include/asm-ia64/machvec.h     |    1 
 include/asm-ia64/processor.h   |    4 +-
 include/asm-ia64/smp.h         |    1 
 16 files changed, 111 insertions(+), 92 deletions(-)

Horms (1):
      [IA64] Ensure that machvec is set up takes place before serial console

Kenji Kaneshige (1):
      [IA64] vector-domain - fix vector_table

Tony Luck (2):
      [IA64] fix section mismatch warnings
      [IA64] Nail two more simple section mismatch errors

Yasuaki Ishimatsu (1):
      [IA64] vector-domain - handle assign_irq_vector(AUTO_ASSIGN)

akpm@linux-foundation.org (1):
      [IA64] rename partial_page

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (102 preceding siblings ...)
  2007-07-25 21:40 ` Luck, Tony
@ 2007-07-27 23:40 ` Luck, Tony
  2007-08-01 22:22 ` Luck, Tony
                   ` (33 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-07-27 23:40 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.  The fs/quota.c change (together with
the changes to arch/{ia64,x86_64}/Kconfig solve a build problem when CONFIG_COMPAT=n
(discussed to death on LKML/linux-arch in the "build fix for x86_64" thread).

Thanks!

-Tony

 arch/ia64/Kconfig               |    3 +++
 arch/ia64/hp/common/sba_iommu.c |    7 ++++++-
 arch/ia64/hp/sim/simscsi.c      |    2 +-
 arch/ia64/kernel/acpi.c         |    9 ++++-----
 arch/ia64/kernel/irq_ia64.c     |    5 ++++-
 arch/x86_64/Kconfig             |    3 +++
 fs/quota.c                      |    2 +-
 7 files changed, 22 insertions(+), 9 deletions(-)

Kenji Kaneshige (3):
      [IA64] Add sanity check into __bind_irq_vector
      [IA64] Fix wrong assumption in acpi_gsi_to_irq
      [IA64] Fix wrong return value in parse_vector_domain

Thomas Renninger (1):
      [IA64] Use new acpi_device_id struct for HID init in ia64/hp/common/sba_iommu.c

Tony Luck (1):
      [IA64] Fix build failure in fs/quota.c

Yoann Padioleau (1):
      [IA64] Compare pointer against NULL, not '0'

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (103 preceding siblings ...)
  2007-07-27 23:40 ` Luck, Tony
@ 2007-08-01 22:22 ` Luck, Tony
  2007-08-17 23:25 ` Luck, Tony
                   ` (32 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-08-01 22:22 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/ia32/sys_ia32.c       |    1 -
 arch/ia64/kernel/iosapic.c      |   19 ++++++++++---------
 arch/ia64/kernel/irq_ia64.c     |   17 ++++++-----------
 arch/ia64/kernel/mca.c          |   17 +++++++++++------
 arch/ia64/kernel/setup.c        |    1 -
 arch/ia64/kernel/smp.c          |    8 +++++---
 arch/ia64/kernel/time.c         |   16 +++++++++++++++-
 arch/ia64/sn/kernel/io_common.c |    2 +-
 arch/ia64/sn/kernel/setup.c     |    1 -
 arch/ia64/sn/kernel/sn2/timer.c |    7 ++-----
 10 files changed, 50 insertions(+), 39 deletions(-)

Avi Kivity (1):
      [IA64] Allow smp_call_function_single() to current cpu

Christoph Lameter (2):
      [IA64] SN2: Fix up sn2_rtc clock
      [IA64] ITC: Reduce rating for ITC clock if ITCs are drifty

Jesper Juhl (1):
      [IA64] Remove a few duplicate includes

Kenji Kaneshige (3):
      [IA64] Fix registered interrupt check
      [IA64] Fix possible race in destroy_and_reserve_irq()
      [IA64] Fix wrong access to irq_desc[] in iosapic_register_intr().

Sam Ravnborg (1):
      [IA64] fix a few section mismatch warnings

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (104 preceding siblings ...)
  2007-08-01 22:22 ` Luck, Tony
@ 2007-08-17 23:25 ` Luck, Tony
  2007-08-30 23:03 ` Luck, Tony
                   ` (31 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-08-17 23:25 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git
release

This will update the files shown below.  The change to mod_devicetable.h
fixes a cross-build problem because of different rules for aligning
8-byte sized objects between $HOSTCC and $CC

Thanks!

-Tony

 arch/ia64/Kconfig                       |   12 -----------
 arch/ia64/configs/bigsur_defconfig      |    2 -
 arch/ia64/configs/gensparse_defconfig   |    2 -
 arch/ia64/configs/sim_defconfig         |    2 -
 arch/ia64/configs/sn2_defconfig         |    2 -
 arch/ia64/configs/tiger_defconfig       |    2 -
 arch/ia64/configs/zx1_defconfig         |    2 -
 arch/ia64/defconfig                     |    3 --
 arch/ia64/hp/sim/boot/boot_head.S       |    1 
 arch/ia64/kernel/cpufreq/acpi-cpufreq.c |    6 +----
 arch/ia64/kernel/irq.c                  |    5 ++++
 arch/ia64/kernel/mca.c                  |   34
+++++++++++++++++---------------
 arch/ia64/kernel/process.c              |   10 ++++++---
 arch/ia64/kernel/ptrace.c               |   10 ++++++---
 arch/ia64/kernel/setup.c                |    7 ++++++
 arch/ia64/kernel/vmlinux.lds.S          |   12 ++++++-----
 arch/ia64/mm/fault.c                    |   14 ++++++++++---
 arch/ia64/sn/kernel/irq.c               |   12 ++++++++++-
 include/asm-ia64/atomic.h               |    4 +--
 include/asm-ia64/hw_irq.h               |    7 +++++-
 include/asm-ia64/machvec.h              |    7 ++++++
 include/asm-ia64/machvec_init.h         |    1 
 include/asm-ia64/machvec_sn2.h          |    2 +
 include/linux/mod_devicetable.h         |    3 +-
 24 files changed, 105 insertions(+), 57 deletions(-)

Alex Williamson (1):
      [IA64] Fix processor_get_freq

Andreas Schwab (1):
      [IA64] Use atomic64_read to read an atomic64_t.

Andrew Burgess (1):
      [IA64] Failure to grow RBS

Christoph Lameter (1):
      [IA64] Update arch/ia64/configs/* s/SLAB/SLUB/

David Mosberger-Tang (3):
      [IA64] make unwinder stop at last frame of the bootloader
      [IA64] need NOTES in vmlinux.lds.S
      [IA64] get back PT_IA_64_UNWIND program header

Dimitri Sivanich (1):
      [IA64] disable irq's and check need_resched before safe_halt

Kenji Kaneshige (1):
      [IA64] SN2 needs platform specific irq_to_vector() function.

Mike Habeck (1):
      [IA64] SGI Altix : fix a force_interrupt bug on altix

Peter Chubb (1):
      [IA64] Enable early console for Ski simulator

Russ Anderson (1):
      [IA64] Clean up CPE handler registration

Satyam Sharma (1):
      [IA64] Include Kconfig.preempt

Shaohua Li (1):
      [IA64] forbid ptrace changes psr.ri to 3

Thomas Renninger (1):
      Cross-compilation between e.g. i386 -> 64bit could break -> work
around it

^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (105 preceding siblings ...)
  2007-08-17 23:25 ` Luck, Tony
@ 2007-08-30 23:03 ` Luck, Tony
  2007-08-31  4:50 ` Linus Torvalds
                   ` (30 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-08-30 23:03 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.  The change to drivers/char/hpet.c
makes the hpet timer code there ia64 only until we can do something better
to merge in arch/{i386,x86_64)/kernel/hpet.c

Thanks!

-Tony

 arch/ia64/hp/sim/hpsim_console.c        |   16 ++++++++++++++--
 arch/ia64/hp/sim/hpsim_setup.c          |    9 ++-------
 arch/ia64/hp/sim/simeth.c               |   12 +++---------
 arch/ia64/hp/sim/simscsi.c              |    3 +--
 arch/ia64/kernel/irq_ia64.c             |   28 ++++++++++++++++++++++------
 arch/ia64/kernel/setup.c                |   13 +++++++------
 arch/ia64/kernel/smpboot.c              |    6 ++++++
 arch/ia64/mm/contig.c                   |    3 +++
 arch/ia64/mm/discontig.c                |    3 +++
 arch/ia64/sn/kernel/huberror.c          |   14 ++++++++++----
 arch/ia64/sn/kernel/irq.c               |   15 +++++++++++++++
 arch/ia64/sn/kernel/sn2/sn2_smp.c       |   26 ++++++++++++++++++++++++++
 arch/ia64/sn/kernel/sn2/sn_hwperf.c     |    3 ++-
 arch/ia64/sn/pci/pcibr/pcibr_provider.c |    1 +
 arch/ia64/sn/pci/tioca_provider.c       |    2 ++
 arch/ia64/sn/pci/tioce_provider.c       |    1 +
 drivers/char/hpet.c                     |   10 ++++++++++
 include/asm-ia64/hpsim.h                |   16 ++++++++++++++++
 include/asm-ia64/sn/arch.h              |    1 +
 include/asm-ia64/sn/intr.h              |    1 +
 include/asm-ia64/sn/sn_feature_sets.h   |    1 +
 21 files changed, 147 insertions(+), 37 deletions(-)

Jesper Juhl (1):
      [IA64] Remove unnecessary cast of allocation return value in sn_hwperf_enum_objects()

John Keller (1):
      [IA64] SN: Add support for CPU disable

John Stultz (1):
      [HPET] "double" hpet clocksource && hard freeze

Kenji Kaneshige (2):
      [IA64] Fix unexpected interrupt vector handling
      [IA64] Clear pending interrupts at CPU boot up time

Peter Chubb (2):
      [IA64] Enable early console for Ski simulator
      [IA64] Cleanup HPSIM code (was: Re: Enable early console for Ski simulator)

Prarit Bhargava (1):
      [IA64] Stop bogus NMI & softlockup warnings in ia64 show_mem

^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (106 preceding siblings ...)
  2007-08-30 23:03 ` Luck, Tony
@ 2007-08-31  4:50 ` Linus Torvalds
  2007-08-31  8:37 ` Linus Torvalds
                   ` (29 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Linus Torvalds @ 2007-08-31  4:50 UTC (permalink / raw)
  To: linux-ia64



On Thu, 30 Aug 2007, Luck, Tony wrote:
> 
> This will update the files shown below.  The change to drivers/char/hpet.c
> makes the hpet timer code there ia64 only until we can do something better
> to merge in arch/{i386,x86_64)/kernel/hpet.c

That's crazy. The patch in question looks like this:

	+/* XXX - FIXME: i386, x86_64 and ia64 all have separate
	+ * hpet clocksource implementations. They should be merged
	+ * and this would be a good place for it.
	+ * Right now this is ia64 only.
	+ */
	+#ifdef CONFIG_IA64
	 static struct clocksource *hpet_clocksource;
	+#else /* this isn't generic enough to use for everyone yet */
	+static struct clocksource *hpet_clocksource = (struct clocksource*)0xdead;
	+#endif

and that means that the change in that patch affects everybody *but* 
ia64 if I read that right.

I do *not* want to take a patch from the ia64 tree that by definition only 
matters for non-ia64 machines. 

So there are two cases:

 - either the code is already only used on ia64, and nobody else will 
   care.

   In this case, the patch is pointless.

 - or it's used by others, and others *will* care, and (judging by the 
   probably intent of the bogus initializer) they may then die a horrible 
   death.

   In this case, the patch is actively evil, and should not have come in 
   through an ia64 merge.

In other words, either it's pointless, or it's really really bad. Please 
explain to me why I should pull this, especially this late in the -rc 
game?

		Linus

^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (107 preceding siblings ...)
  2007-08-31  4:50 ` Linus Torvalds
@ 2007-08-31  8:37 ` Linus Torvalds
  2007-08-31  8:53 ` Thomas Gleixner
                   ` (28 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Linus Torvalds @ 2007-08-31  8:37 UTC (permalink / raw)
  To: linux-ia64



On Thu, 30 Aug 2007, Linus Torvalds wrote:
> 
> So there are two cases:
> 
>  - either the code is already only used on ia64, and nobody else will 
>    care.
> 
>    In this case, the patch is pointless.
> 
>  - or it's used by others, and others *will* care, and (judging by the 
>    probably intent of the bogus initializer) they may then die a horrible 
>    death.
> 
>    In this case, the patch is actively evil, and should not have come in 
>    through an ia64 merge.
> 
> In other words, either it's pointless, or it's really really bad. Please 
> explain to me why I should pull this, especially this late in the -rc 
> game?

Having looked closer, it looks like the magic actually disables some 
broken code from happening on other architectures.

However, why was it done in that illogical manner?

It would appear that what you actually wanted to happen in that commit was 
to make sure that the clocksource didn't get registered. If so, the 
logical patch would be something like the appended instead, which would 
disable the code that registers it the _obvious_ way, instead of 
initializing a variable to a bad pointer and then relying on the bad 
pointer to disable the code.

So can somebody explain to me why it was done in that really odd way? 

		Linus


---
 drivers/char/hpet.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/drivers/char/hpet.c b/drivers/char/hpet.c
index 77bf4aa..7ecffc9 100644
--- a/drivers/char/hpet.c
+++ b/drivers/char/hpet.c
@@ -909,6 +909,8 @@ int hpet_alloc(struct hpet_data *hdp)
 
 	hpetp->hp_delta = hpet_calibrate(hpetp);
 
+/* This clocksource driver currently only works on ia64 */
+#ifdef CONFIG_IA64
 	if (!hpet_clocksource) {
 		hpet_mctr = (void __iomem *)&hpetp->hp_hpet->hpet_mc;
 		CLKSRC_FSYS_MMIO_SET(clocksource_hpet.fsys_mmio, hpet_mctr);
@@ -918,6 +920,7 @@ int hpet_alloc(struct hpet_data *hdp)
 		hpetp->hp_clocksource = &clocksource_hpet;
 		hpet_clocksource = &clocksource_hpet;
 	}
+#endif
 
 	return 0;
 }

^ permalink raw reply related	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (108 preceding siblings ...)
  2007-08-31  8:37 ` Linus Torvalds
@ 2007-08-31  8:53 ` Thomas Gleixner
  2007-08-31 18:46 ` john stultz
                   ` (27 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Thomas Gleixner @ 2007-08-31  8:53 UTC (permalink / raw)
  To: linux-ia64

On Fri, 2007-08-31 at 01:37 -0700, Linus Torvalds wrote:
> It would appear that what you actually wanted to happen in that commit was 
> to make sure that the clocksource didn't get registered. If so, the 
> logical patch would be something like the appended instead, which would 
> disable the code that registers it the _obvious_ way, instead of 
> initializing a variable to a bad pointer and then relying on the bad 
> pointer to disable the code.
> 
> So can somebody explain to me why it was done in that really odd way? 

Oops, slipped through my attention. Indeed your #ifdef IA64 variant is
the sane solution.

	tglx



^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (109 preceding siblings ...)
  2007-08-31  8:53 ` Thomas Gleixner
@ 2007-08-31 18:46 ` john stultz
  2007-09-01 10:14 ` Luck, Tony
                   ` (26 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: john stultz @ 2007-08-31 18:46 UTC (permalink / raw)
  To: linux-ia64

On Fri, 2007-08-31 at 01:37 -0700, Linus Torvalds wrote:
> 
> On Thu, 30 Aug 2007, Linus Torvalds wrote:
> > 
> > So there are two cases:
> > 
> >  - either the code is already only used on ia64, and nobody else will 
> >    care.
> > 
> >    In this case, the patch is pointless.
> > 
> >  - or it's used by others, and others *will* care, and (judging by the 
> >    probably intent of the bogus initializer) they may then die a horrible 
> >    death.
> > 
> >    In this case, the patch is actively evil, and should not have come in 
> >    through an ia64 merge.
> > 
> > In other words, either it's pointless, or it's really really bad. Please 
> > explain to me why I should pull this, especially this late in the -rc 
> > game?
> 
> Having looked closer, it looks like the magic actually disables some 
> broken code from happening on other architectures.
> 
> However, why was it done in that illogical manner?
> 
> It would appear that what you actually wanted to happen in that commit was 
> to make sure that the clocksource didn't get registered. If so, the 
> logical patch would be something like the appended instead, which would 
> disable the code that registers it the _obvious_ way, instead of 
> initializing a variable to a bad pointer and then relying on the bad 
> pointer to disable the code.
> 
> So can somebody explain to me why it was done in that really odd way? 

Sorry, that's me.  I just got smacked earlier for #ifdef's in code, so I
figured by initializing hpet_clocksource to a junk value it wouldn't get
initialized, and kept the #ifdefs outside functions. I'll agree it is
more obfuscated, and yours is much more straight forward.

Apologies, apparently I'm still learning the balance.
-john

> ---
>  drivers/char/hpet.c |    3 +++
>  1 files changed, 3 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/char/hpet.c b/drivers/char/hpet.c
> index 77bf4aa..7ecffc9 100644
> --- a/drivers/char/hpet.c
> +++ b/drivers/char/hpet.c
> @@ -909,6 +909,8 @@ int hpet_alloc(struct hpet_data *hdp)
> 
>  	hpetp->hp_delta = hpet_calibrate(hpetp);
> 
> +/* This clocksource driver currently only works on ia64 */
> +#ifdef CONFIG_IA64
>  	if (!hpet_clocksource) {
>  		hpet_mctr = (void __iomem *)&hpetp->hp_hpet->hpet_mc;
>  		CLKSRC_FSYS_MMIO_SET(clocksource_hpet.fsys_mmio, hpet_mctr);
> @@ -918,6 +920,7 @@ int hpet_alloc(struct hpet_data *hdp)
>  		hpetp->hp_clocksource = &clocksource_hpet;
>  		hpet_clocksource = &clocksource_hpet;
>  	}
> +#endif
> 
>  	return 0;
>  }




^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (110 preceding siblings ...)
  2007-08-31 18:46 ` john stultz
@ 2007-09-01 10:14 ` Luck, Tony
  2007-09-01 10:19 ` Luck, Tony
                   ` (25 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-09-01 10:14 UTC (permalink / raw)
  To: linux-ia64

> Having looked closer, it looks like the magic actually disables some 
> broken code from happening on other architectures.

Yes.  The drivers/char/hpet.c clocksource code was added for ia64 as
part of the switch from the time interpolator to the generic clock
code ... but the patch had languished for a long time, and by the time
it was resurrected, i386 and x86_64 had added their own arch specific
code ... which didn't get noticed until the "double hpet" bug report
was logged.

> However, why was it done in that illogical manner?

Too much LDS back in the sixties?  It looked very weird, but in a
cute sort of way ... and I though the lifetime of the code was likely
to be short (since this code is screming to be merged into a single
version used by any arch with HPET) ... so I pushed it in.  Sorry.
Your patch is much better.

Here's a commit comment for your patch:

The HPET clocksource code in drivers/char/hpet.c should not be
registered on anything except ia64 (as it is known to cause problems
on x86_64, and perhaps i386 too). Disable this code with an #ifdef
until we can merge all the hpet clocksource code.

Acked-by: Tony Luck <tony.luck@intel.com>


---
 drivers/char/hpet.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/drivers/char/hpet.c b/drivers/char/hpet.c
index 77bf4aa..7ecffc9 100644
--- a/drivers/char/hpet.c
+++ b/drivers/char/hpet.c
@@ -909,6 +909,8 @@ int hpet_alloc(struct hpet_data *hdp)
 
 	hpetp->hp_delta = hpet_calibrate(hpetp);
 
+/* This clocksource driver currently only works on ia64 */
+#ifdef CONFIG_IA64
 	if (!hpet_clocksource) {
 		hpet_mctr = (void __iomem *)&hpetp->hp_hpet->hpet_mc;
 		CLKSRC_FSYS_MMIO_SET(clocksource_hpet.fsys_mmio, hpet_mctr);
@@ -918,6 +920,7 @@ int hpet_alloc(struct hpet_data *hdp)
 		hpetp->hp_clocksource = &clocksource_hpet;
 		hpet_clocksource = &clocksource_hpet;
 	}
+#endif
 
 	return 0;
 }

^ permalink raw reply related	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (111 preceding siblings ...)
  2007-09-01 10:14 ` Luck, Tony
@ 2007-09-01 10:19 ` Luck, Tony
  2007-09-04  7:44 ` Linus Torvalds
                   ` (24 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-09-01 10:19 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

I backed up my tree to before the evil HPET disable commit, and then
cherry-picked the stuff that follwed.  So here's the revised pull without
the stupidity.

Note to anyone else using my GIT tree ... this means my tree jumped
sideways and you won't be able to pull from it if you had done a pull
since Thursday.  You'll have to back the branch you use to track my
tree back up (e.g. to v2.6.23-rc4) before you can pull again.

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/hp/sim/hpsim_console.c        |   16 ++++++++++++++--
 arch/ia64/hp/sim/hpsim_setup.c          |    9 ++-------
 arch/ia64/hp/sim/simeth.c               |   12 +++---------
 arch/ia64/hp/sim/simscsi.c              |    3 +--
 arch/ia64/kernel/irq_ia64.c             |   28 ++++++++++++++++++++++------
 arch/ia64/kernel/setup.c                |   13 +++++++------
 arch/ia64/kernel/smpboot.c              |    6 ++++++
 arch/ia64/mm/contig.c                   |    3 +++
 arch/ia64/mm/discontig.c                |    3 +++
 arch/ia64/sn/kernel/huberror.c          |   14 ++++++++++----
 arch/ia64/sn/kernel/irq.c               |   15 +++++++++++++++
 arch/ia64/sn/kernel/sn2/sn2_smp.c       |   26 ++++++++++++++++++++++++++
 arch/ia64/sn/kernel/sn2/sn_hwperf.c     |    3 ++-
 arch/ia64/sn/pci/pcibr/pcibr_provider.c |    1 +
 arch/ia64/sn/pci/tioca_provider.c       |    2 ++
 arch/ia64/sn/pci/tioce_provider.c       |    1 +
 include/asm-ia64/hpsim.h                |   16 ++++++++++++++++
 include/asm-ia64/sn/arch.h              |    1 +
 include/asm-ia64/sn/intr.h              |    1 +
 include/asm-ia64/sn/sn_feature_sets.h   |    1 +
 20 files changed, 137 insertions(+), 37 deletions(-)

Jesper Juhl (1):
      [IA64] Remove unnecessary cast of allocation return value in sn_hwperf_enum_objects()

John Keller (1):
      [IA64] SN: Add support for CPU disable

Kenji Kaneshige (2):
      [IA64] Fix unexpected interrupt vector handling
      [IA64] Clear pending interrupts at CPU boot up time

Peter Chubb (2):
      [IA64] Enable early console for Ski simulator
      [IA64] Cleanup HPSIM code (was: Re: Enable early console for Ski simulator)

Prarit Bhargava (1):
      [IA64] Stop bogus NMI & softlockup warnings in ia64 show_mem

^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (112 preceding siblings ...)
  2007-09-01 10:19 ` Luck, Tony
@ 2007-09-04  7:44 ` Linus Torvalds
  2007-10-15 16:35 ` Luck, Tony
                   ` (23 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Linus Torvalds @ 2007-09-04  7:44 UTC (permalink / raw)
  To: linux-ia64



On Sat, 1 Sep 2007, Luck, Tony wrote:
> 
> Note to anyone else using my GIT tree ... this means my tree jumped
> sideways and you won't be able to pull from it if you had done a pull
> since Thursday.  You'll have to back the branch you use to track my
> tree back up (e.g. to v2.6.23-rc4) before you can pull again.
> 
> please pull from:
> 
> 	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

Thanks, pulled.

		Linus

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (113 preceding siblings ...)
  2007-09-04  7:44 ` Linus Torvalds
@ 2007-10-15 16:35 ` Luck, Tony
  2007-10-15 22:21 ` Luck, Tony
                   ` (22 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-10-15 16:35 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/Kconfig                |   10 
 arch/ia64/configs/sn2_defconfig  |  443 ++++++++++++++++-----------------------
 arch/ia64/hp/common/Makefile     |    1 
 arch/ia64/hp/common/aml_nfw.c    |  236 ++++++++++++++++++++
 arch/ia64/kernel/crash.c         |   15 -
 arch/ia64/kernel/machine_kexec.c |    6 
 arch/ia64/kernel/mca.c           |   88 +++----
 arch/ia64/kernel/mca_drv.h       |    2 
 arch/ia64/kernel/palinfo.c       |    6 
 arch/ia64/kernel/perfmon.c       |    7 
 arch/ia64/kernel/salinfo.c       |    4 
 arch/ia64/kernel/topology.c      |   12 -
 include/asm-ia64/mca.h           |    2 
 include/asm-ia64/sal.h           |   15 -
 14 files changed, 512 insertions(+), 335 deletions(-)

Bjorn Helgaas (2):
      [IA64] abstract SAL_CALL wrapper to allow other firmware entry points
      [IA64] add driver for ACPI methods to call native firmware

Jes Sorensen (1):
      [IA64] update sn2_defconfig

Kenji Kaneshige (2):
      [IA64] Fix kernel panic in kdump on INIT
      [IA64] Fix kernel hangup in kdump on INIT

Russ Anderson (2):
      [IA64] Remove needless delay in MCA rendezvous
      [IA64] Fix race when multiple cpus go through MCA

Satyam Sharma (2):
      [IA64] tree-wide: Misc __cpu{initdata, init, exit} annotations
      [IA64] perfmon: Remove exit_pfm_fs()

Simon Horman (1):
      [IA64] Remove vector from ia64_machine_kexec()

^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (114 preceding siblings ...)
  2007-10-15 16:35 ` Luck, Tony
@ 2007-10-15 22:21 ` Luck, Tony
  2007-10-16 21:49 ` Luck, Tony
                   ` (21 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-10-15 22:21 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

Another quick pull to fix the ia64 build problem introduced by some
header file re-arrangements elsewhere in the tree.

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

Or since git is updating slowly right now, from:

	ssh://master.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the file shown below.

Thanks!

-Tony

 include/asm-ia64/dma-mapping.h |    1 +
 1 file changed, 1 insertion(+)

Tony Luck (1):
      [IA64] build fix for scatterlist

^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (115 preceding siblings ...)
  2007-10-15 22:21 ` Luck, Tony
@ 2007-10-16 21:49 ` Luck, Tony
  2007-10-17 22:06 ` Luck, Tony
                   ` (20 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-10-16 21:49 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

And another quick pull to fix an ia64 UP build problem.

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

Or since git is updating slowly right now, from:

	ssh://master.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the file shown below.

Thanks!

-Tony

 arch/ia64/kernel/setup.c |    2 ++
 1 file changed, 2 insertions(+)

Tony Luck (1):
      [IA64] Fix build for CONFIG_SMP=n

^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (116 preceding siblings ...)
  2007-10-16 21:49 ` Luck, Tony
@ 2007-10-17 22:06 ` Luck, Tony
  2007-10-30 18:46 ` Luck, Tony
                   ` (19 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-10-17 22:06 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

Another day, another buildfix, another git pull ...

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/kernel/machine_kexec.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Andrew Morton (1):
      [IA64] fix non-numa build

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (117 preceding siblings ...)
  2007-10-17 22:06 ` Luck, Tony
@ 2007-10-30 18:46 ` Luck, Tony
  2007-11-09 23:09 ` Luck, Tony
                   ` (18 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-10-30 18:46 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/configs/sn2_defconfig    |  106 ++++++++++++++++++-------------------
 arch/ia64/kernel/efi.c             |    2 
 arch/ia64/kernel/gate.lds.S        |    3 +
 arch/ia64/kernel/msi_ia64.c        |    2 
 arch/ia64/kernel/setup.c           |   49 ++---------------
 arch/ia64/kernel/smpboot.c         |   21 ++++---
 arch/ia64/mm/init.c                |    4 -
 arch/ia64/scripts/check-segrel.lds |    1 
 arch/ia64/sn/kernel/mca.c          |    1 
 include/asm-ia64/percpu.h          |    2 
 include/asm-ia64/smp.h             |    1 
 11 files changed, 86 insertions(+), 106 deletions(-)

Adrian Bunk (1):
      [IA64] ia64/mm/init.c: fix section mismatches

Alex Chiang (1):
      [IA64] /proc/cpuinfo "physical id" field cleanups

Jes Sorensen (1):
      [IA64] update sn2 defconfig to 64kb pages

Kenji Kaneshige (1):
      [IA64] Fix incorrect return value from ia64_setup_msi_irq()

Roel Kluin (1):
      [IA64] arch/ia64/sn/kernel/mca.c: undo lock when sn_oemdata can't be extended

Roland McGrath (2):
      [IA64] check-segrel.lds vs --build-id
      [IA64] vDSO vs --build-id

Simon Horman (1):
      [IA64] vmcore_find_descriptor_size should be in __init

Yu Luming (1):
      [IA64] fix typo in per_cpu_offset

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (118 preceding siblings ...)
  2007-10-30 18:46 ` Luck, Tony
@ 2007-11-09 23:09 ` Luck, Tony
  2007-12-10 21:37 ` Luck, Tony
                   ` (17 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-11-09 23:09 UTC (permalink / raw)
  To: linux-ia64

From: "Luck, Tony" <tony.luck@intel.com>
To: torvalds@linux-foundation.org
cc: linux-ia64@vger.kernel.org
Subject: git pull on ia64 linux tree
Reply-to: tony.luck@intel.com

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/hp/sim/boot/fw-emu.c |    2 
 arch/ia64/ia32/ia32priv.h      |    1 
 arch/ia64/kernel/.gitignore    |    1 
 arch/ia64/kernel/acpi.c        |    8 ++-
 arch/ia64/kernel/efi.c         |    5 +-
 arch/ia64/kernel/iosapic.c     |   18 ++++++--
 arch/ia64/kernel/irq.c         |    6 +-
 arch/ia64/kernel/mca.c         |    2 
 arch/ia64/kernel/palinfo.c     |   91 +++++++++++++++++++++++++++++++++++------
 arch/ia64/kernel/patch.c       |    3 -
 arch/ia64/kernel/perfmon.c     |    4 -
 arch/ia64/mm/contig.c          |   74 ++++++++++++++++++---------------
 arch/ia64/sn/kernel/irq.c      |    8 +++
 arch/ia64/sn/kernel/xpc_main.c |   12 +----
 include/asm-ia64/pal.h         |    5 +-
 15 files changed, 165 insertions(+), 75 deletions(-)

Dean Nelson (1):
      [IA64] XPC heartbeat timer function must run on CPU 0

George Beshers (1):
      [IA64] IOSAPIC bogus error cleanup

Kenji Kaneshige (2):
      [IA64] Clean up /proc/interrupts output
      [IA64] Fix IOSAPIC delivery mode setting

Li Zefan (1):
      [IA64] Wrong args to memset in efi_gettimeofday()

Lucas Woods (1):
      [IA64] Remove duplicate includes from ia32priv.h

Peter Chubb (1):
      [IA64] Add gate.lds to list of files ignored by Git

Roel Kluin (1):
      [IA64] fix number of bytes zeroed by sys_fw_init() in arch/ia64/hp/sim/boot/fw-emu.c

Russ Anderson (3):
      [IA64] Clean-up McKinley Errata message
      [IA64] Disable/re-enable CPE interrupts on Altix
      [IA64] Update printing of feature set bits

Tony Luck (2):
      [IA64] Fix perfmon sysctl directory modes
      [IA64] Fix section mismatch in contig.c version of per_cpu_init()

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (119 preceding siblings ...)
  2007-11-09 23:09 ` Luck, Tony
@ 2007-12-10 21:37 ` Luck, Tony
  2007-12-10 22:45 ` Linus Torvalds
                   ` (16 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-12-10 21:37 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/Makefile                   |    2 +-
 arch/ia64/hp/sim/boot/Makefile       |    2 +-
 arch/ia64/hp/sim/boot/bootloader.lds |    3 ++-
 arch/ia64/kernel/acpi.c              |    2 +-
 arch/ia64/kernel/efi.c               |   10 +++++-----
 arch/ia64/kernel/gate.lds.S          |    2 +-
 arch/ia64/kernel/ia64_ksyms.c        |    3 +++
 arch/ia64/kernel/iosapic.c           |   21 ++++-----------------
 arch/ia64/kernel/kprobes.c           |   29 ++++++++++++++++++++++-------
 arch/ia64/kernel/setup.c             |    3 +--
 arch/ia64/kernel/signal.c            |    8 ++++----
 arch/ia64/kernel/vmlinux.lds.S       |    3 ++-
 arch/ia64/lib/Makefile               |    4 ++--
 arch/ia64/mm/tlb.c                   |    2 +-
 arch/ia64/sn/kernel/io_common.c      |   13 ++++++-------
 include/asm-ia64/iosapic.h           |    2 --
 16 files changed, 56 insertions(+), 53 deletions(-)

Andrew Morton (3):
      [IA64] increase .data.patch offset
      [IA64] don't assume that unwcheck.py is executable
      [IA64] export copy_page() to modules

Bernhard Walle (1):
      [IA64] rename _bss to __bss_start

Joe Perches (1):
      [IA64] Add missing "space" to concatenated strings

Kenji Kaneshige (1):
      [IA64] Fix iosapic interrupt delivery mode for CPE

Li Zefan (1):
      [IA64] make full use of macro efi_md_size

Mike Habeck (1):
      [IA64] SGI Altix : fix bug in sn_io_late_init()

Roel Kluin (1):
      [IA64] operator priority fix in acpi_map_lsapic()

Shaohua Li (1):
      [IA64] kprobe: make kreturn probe handler stack unwind correct

Shi Weihua (1):
      [IA64] signal : fix missing error checkings

Simon Horman (1):
      [IA64] iosapic cleanup

^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (120 preceding siblings ...)
  2007-12-10 21:37 ` Luck, Tony
@ 2007-12-10 22:45 ` Linus Torvalds
  2007-12-10 23:07 ` Luck, Tony
                   ` (15 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Linus Torvalds @ 2007-12-10 22:45 UTC (permalink / raw)
  To: linux-ia64



On Mon, 10 Dec 2007, Luck, Tony wrote:
>
> This will update the files shown below.
>
> ..
>  16 files changed, 56 insertions(+), 53 deletions(-)

Hmm. It also did:

   mode change 100755 => 100644 arch/ia64/scripts/unwcheck.py

was that really intentional?

Sure, the commit itself:

> Andrew Morton:
>       [IA64] don't assume that unwcheck.py is executable

makes the Makefile work even for a non-executable file for when you use 
inferior tools, but does that mean that we should have thrown away the 
information that it *is* an executable file when not using those inferior 
tools?

		Linus

^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (121 preceding siblings ...)
  2007-12-10 22:45 ` Linus Torvalds
@ 2007-12-10 23:07 ` Luck, Tony
  2007-12-10 23:21 ` Luck, Tony
                   ` (14 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-12-10 23:07 UTC (permalink / raw)
  To: linux-ia64

 
> makes the Makefile work even for a non-executable file for when you use 
> inferior tools, but does that mean that we should have thrown away the 
> information that it *is* an executable file when not using those inferior 
> tools?

Once I added the "python " in front of the name in the Makefile, the need
for it to be executable went away ... so I did the chmod deliberately as
it looked like we didn't need the execute bit any more.

This is only wrong if there are people in the habit of running
arch/ia64/scripts/unwcheck.py manually from the command line.
I've never done this ... but perhaps someone might be sad that
I took the execute bit away.

-Tony

^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (122 preceding siblings ...)
  2007-12-10 23:07 ` Luck, Tony
@ 2007-12-10 23:21 ` Luck, Tony
  2007-12-11  3:11 ` Linus Torvalds
                   ` (13 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-12-10 23:21 UTC (permalink / raw)
  To: linux-ia64

> Hmm. It also did:
>
>   mode change 100755 => 100644 arch/ia64/scripts/unwcheck.py

Should I update my script that makes the "Please pull" message.
Right now it just uses "git whatchanged release ^linus | git-shortlog"
which doesn't mention any mode changes ... thus your understandable
confusion about whether I had meant to make this change.

What git command would neatly summarize any mode changes?  Or would
I have to roll my own from the whatchanged output?

-Tony

^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (123 preceding siblings ...)
  2007-12-10 23:21 ` Luck, Tony
@ 2007-12-11  3:11 ` Linus Torvalds
  2007-12-11 17:45 ` Luck, Tony
                   ` (12 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Linus Torvalds @ 2007-12-11  3:11 UTC (permalink / raw)
  To: linux-ia64



On Mon, 10 Dec 2007, Luck, Tony wrote:
> 
> Should I update my script that makes the "Please pull" message.

It should be added automatically to the diffstat if you create the 
diffstat with

	git diff -C --stat --summary linus...release

(that triple dot creates the diff from the last common point - the 
so-called merge-base - and it generally does the right thing unless you've 
merged things from me)

> Right now it just uses "git whatchanged release ^linus | git-shortlog"
> which doesn't mention any mode changes ... thus your understandable
> confusion about whether I had meant to make this change.
> 
> What git command would neatly summarize any mode changes?  Or would
> I have to roll my own from the whatchanged output?

I thought you already generated the diffstat with "git diff --stat", and 
if so, just adding "--summary" should do it.

That does a list of what files changed modes, and what files were created, 
deleted, moved or copied. So for the commit in question, we 
get

	[torvalds@woody linux]$ git show -C --stat --summary ff08e657f3e7224d090dd816e00cea2c110575c4

	commit ff08e657f3e7224d090dd816e00cea2c110575c4
	Author: Andrew Morton <akpm@linux-foundation.org>
	Date:   Fri Dec 7 14:42:08 2007 -0800
	
	    [IA64] don't assume that unwcheck.py is executable
	
	    Don't assume that this file has execute permissions.  For example, patch(1)
	    loses that information.
	
	    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
	    Signed-off-by: Tony Luck <tony.luck@intel.com>
	
	 arch/ia64/Makefile            |    2 +-
	 1 files changed, 1 insertions(+), 1 deletions(-)
	 mode change 100755 => 100644 arch/ia64/scripts/unwcheck.py

but it works with the other diff generation tools too (ie doing 
something like "git log -C --stat --summary" will do the obvious thing)

		Linus

^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (124 preceding siblings ...)
  2007-12-11  3:11 ` Linus Torvalds
@ 2007-12-11 17:45 ` Luck, Tony
  2007-12-19 22:01 ` Luck, Tony
                   ` (11 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-12-11 17:45 UTC (permalink / raw)
  To: linux-ia64

> I thought you already generated the diffstat with "git diff --stat", and 
> if so, just adding "--summary" should do it.

My script was written in the early hours (well weeks) of git history. Perhaps
I didn't know about "--stat" or maybe it didn't exist yet. The script
currently just pipes "git-whatchanged -p" output to "diffstat -p1".  I'll
update it with this new fancy "..." syntax and use the --summary.

-Tony

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (125 preceding siblings ...)
  2007-12-11 17:45 ` Luck, Tony
@ 2007-12-19 22:01 ` Luck, Tony
  2008-01-03 23:07 ` Luck, Tony
                   ` (10 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2007-12-19 22:01 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/hp/common/sba_iommu.c   |    3 ++-
 arch/ia64/ia32/binfmt_elf32.c     |   28 ++++++++++++----------------
 arch/ia64/kernel/head.S           |    1 +
 arch/ia64/kernel/irq_ia64.c       |    4 ++--
 arch/ia64/kernel/mca.c            |   33 +++++++++++++++++++++++++++++++++
 arch/ia64/kernel/process.c        |    7 +++++--
 arch/ia64/kernel/signal.c         |   10 +---------
 arch/ia64/kernel/uncached.c       |    2 +-
 arch/ia64/mm/tlb.c                |   18 +++++++++++++++---
 arch/ia64/sn/kernel/bte.c         |    4 ++--
 arch/ia64/sn/kernel/bte_error.c   |    8 ++++++--
 arch/ia64/sn/pci/tioce_provider.c |    2 +-
 include/asm-ia64/bitops.h         |   17 ++++++++++++++---
 include/asm-ia64/gcc_intrin.h     |    5 +++++
 include/asm-ia64/hw_irq.h         |    2 +-
 include/asm-ia64/intel_intrin.h   |    3 +++
 include/asm-ia64/sn/bte.h         |   31 ++++++++++++++++++++++++++++++-
 include/asm-ia64/sn/xp.h          |   27 +++++++++++++++++++++++++--
 include/asm-ia64/sn/xpc.h         |    8 +++++++-
 include/asm-ia64/tlbflush.h       |    6 +++++-
 20 files changed, 171 insertions(+), 48 deletions(-)

Christoph Lameter (1):
      IA64: Slim down __clear_bit_unlock

Hidetoshi Seto (2):
      [IA64] Remove assembler warnings on head.S
      [IA64] Adjust CMCI mask on CPU hotplug

Ian Wienand (1):
      [IA64] set_thread_area fails in IA32 chroot

Jan Beulich (1):
      [IA64] make flush_tlb_kernel_range() an inline function

Joe Perches (1):
      [IA64] Two trivial spelling fixes

Kenji Kaneshige (1):
      [IA64] Remove compiler warinings about uninitialized variable in irq_ia64.c

Nick Piggin (1):
      [IA64] ia32 nopage

Russ Anderson (1):
      [IA64] Fix Altix BTE error return status

Shi Weihua (1):
      [IA64] signal: remove redundant code in setup_sigcontext()

Simon Horman (1):
      [IA64] Guard elfcorehdr_addr with #if CONFIG_PROC_FS

Tony Luck (1):
      [IA64] print kernel release in OOPS to make kerneloops.org happy

de Dinechin, Christophe (Integrity VM) (1):
      [IA64] Avoid unnecessary TLB flushes when allocating memory




^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (126 preceding siblings ...)
  2007-12-19 22:01 ` Luck, Tony
@ 2008-01-03 23:07 ` Luck, Tony
  2008-02-05 18:10 ` Luck, Tony
                   ` (9 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2008-01-03 23:07 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/sn/kernel/xp_nofault.S |   10 +++++++---
 include/asm-ia64/sn/xpc.h        |    6 ++++--
 2 files changed, 11 insertions(+), 5 deletions(-)

Russ Anderson (2):
      [IA64] Update Altix BTE error return status patch
      [IA64] Update Altix nofault code




^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (127 preceding siblings ...)
  2008-01-03 23:07 ` Luck, Tony
@ 2008-02-05 18:10 ` Luck, Tony
  2008-02-06  4:45 ` Christoph Hellwig
                   ` (8 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2008-02-05 18:10 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 Documentation/ia64/aliasing-test.c    |   15 +-
 MAINTAINERS                           |    9 +
 arch/ia64/hp/common/sba_iommu.c       |    2 +-
 arch/ia64/ia32/ia32_support.c         |    5 +-
 arch/ia64/kernel/efi.c                |  502 ++++++++++++++++++---------------
 arch/ia64/kernel/fsyscall_gtod_data.h |    4 +-
 arch/ia64/kernel/ia64_ksyms.c         |    3 +
 arch/ia64/kernel/kprobes.c            |    7 +-
 arch/ia64/kernel/mca.c                |   66 +++--
 arch/ia64/kernel/mca_asm.S            |   46 ++--
 arch/ia64/kernel/mca_drv.c            |    2 +-
 arch/ia64/kernel/mca_drv.h            |    2 +-
 arch/ia64/kernel/mca_drv_asm.S        |    2 +-
 arch/ia64/kernel/perfmon.c            |    6 +-
 arch/ia64/kernel/sal.c                |   14 +
 arch/ia64/kernel/setup.c              |    2 +-
 arch/ia64/kernel/smpboot.c            |   11 -
 arch/ia64/kernel/traps.c              |   35 ++-
 arch/ia64/kernel/unaligned.c          |   13 +-
 arch/ia64/mm/fault.c                  |    8 +-
 arch/ia64/sn/kernel/sn2/sn2_smp.c     |    2 +-
 arch/ia64/sn/kernel/sn2/sn_hwperf.c   |   11 +-
 include/asm-ia64/bitops.h             |   50 ++--
 include/asm-ia64/gcc_intrin.h         |    2 +
 include/asm-ia64/mca.h                |    6 +-
 include/asm-ia64/mca_asm.h            |    3 +-
 include/asm-ia64/processor.h          |    2 +-
 include/asm-ia64/sal.h                |   14 +-
 28 files changed, 468 insertions(+), 376 deletions(-)

Aron Griffis (3):
      [IA64] Make efi.c mostly fit in 80 columns
      [IA64] efi.c Spelling/punctuation fixes
      [IA64] efi.c Add /* never reached */ annotation

Daniel Walker (1):
      [IA64] sn_hwperf semaphore to mutex

Doug Chapman (1):
      [IA64] fix userspace compile error in gcc_intrin.h

Hidetoshi Seto (2):
      [IA64] generalize attribute of fsyscall_gtod_data
      [IA64] mca style cleanup

Jan Beulich (2):
      [IA64] remove dead code: __cpu_{down,die} from !HOTPLUG_CPU
      [IA64] honor notify_die() returning NOTIFY_STOP

Jan Engelhardt (1):
      [IA64] constify function pointer tables

Masami Hiramatsu (1):
      [IA64] Fix the order of atomic operations in restore_previous_kprobes on ia64

Pavel Emelyanov (1):
      [IA64] make pfm_get_task work with virtual pids

Randy Dunlap (1):
      [IA64] aliasing-test: fix gcc warnings on non-ia64

Xiantao Zhang (1):
      [IA64] ia64_set_psr should use srlz.i

Zhang Xiantao (1):
      [IA64] Appoint kvm/ia64 Maintainers

Zhang, Xiantao (1):
      [IA64] Export three symbols for module use

Zoltan Menyhart (1):
      [IA64] Slim-down __clear_bit_unlock




^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (128 preceding siblings ...)
  2008-02-05 18:10 ` Luck, Tony
@ 2008-02-06  4:45 ` Christoph Hellwig
  2008-02-06 17:37 ` Luck, Tony
                   ` (7 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Christoph Hellwig @ 2008-02-06  4:45 UTC (permalink / raw)
  To: linux-ia64

On Tue, Feb 05, 2008 at 10:10:40AM -0800, Luck, Tony wrote:
> Hi Linus,
> 
> please pull from:
> 
> 	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release
> 
> This will update the files shown below.

Any reason the various ptrace bits are not included in this pull?


^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (129 preceding siblings ...)
  2008-02-06  4:45 ` Christoph Hellwig
@ 2008-02-06 17:37 ` Luck, Tony
  2008-02-07  8:49 ` Petr Tesarik
                   ` (6 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2008-02-06 17:37 UTC (permalink / raw)
  To: linux-ia64

> Any reason the various ptrace bits are not included in this pull?

The ptrace bits depend upon some generic changes to add arch_ptrace_stop()
... I think Andrew included them as part 89/260 of today's early
morning mail patch bomb.

-Tony


^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (130 preceding siblings ...)
  2008-02-06 17:37 ` Luck, Tony
@ 2008-02-07  8:49 ` Petr Tesarik
  2008-02-07  8:49 ` Christoph Hellwig
                   ` (5 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Petr Tesarik @ 2008-02-07  8:49 UTC (permalink / raw)
  To: linux-ia64

[-- Attachment #1: Type: text/plain, Size: 402 bytes --]

On Wed, 2008-02-06 at 09:37 -0800, Luck, Tony wrote:
> > Any reason the various ptrace bits are not included in this pull?
> 
> The ptrace bits depend upon some generic changes to add arch_ptrace_stop()
> ... I think Andrew included them as part 89/260 of today's early
> morning mail patch bomb.

Yes, exactly. I've been looking forward to it for some time already.

Cheers,
Petr Tesarik


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (131 preceding siblings ...)
  2008-02-07  8:49 ` Petr Tesarik
@ 2008-02-07  8:49 ` Christoph Hellwig
  2008-02-08 22:46 ` Luck, Tony
                   ` (4 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Christoph Hellwig @ 2008-02-07  8:49 UTC (permalink / raw)
  To: linux-ia64

On Wed, Feb 06, 2008 at 09:37:54AM -0800, Luck, Tony wrote:
> > Any reason the various ptrace bits are not included in this pull?
> 
> The ptrace bits depend upon some generic changes to add arch_ptrace_stop()
> ... I think Andrew included them as part 89/260 of today's early
> morning mail patch bomb.

Yes, arch_ptrace_stop is in now.

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (132 preceding siblings ...)
  2008-02-07  8:49 ` Christoph Hellwig
@ 2008-02-08 22:46 ` Luck, Tony
  2008-02-09  5:04 ` Christoph Hellwig
                   ` (3 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2008-02-08 22:46 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/kernel/entry.S       |    5 +-
 arch/ia64/kernel/mca.c         |   55 ++++++++--------
 arch/ia64/kernel/perfmon.c     |   21 +-----
 arch/ia64/kernel/process.c     |   59 +++++++++--------
 arch/ia64/kernel/ptrace.c      |  139 ++++++++++++++++++++++++++++++++++++++++
 include/asm-ia64/ptrace.h      |   11 +++
 include/asm-ia64/thread_info.h |   11 ++-
 include/asm-ia64/unistd.h      |    5 +-
 8 files changed, 225 insertions(+), 81 deletions(-)

Petr Tesarik (3):
      [IA64] Rename TIF_PERFMON_WORK back to TIF_NOTIFY_RESUME
      [IA64] Synchronize kernel RSE to user-space and back
      [IA64] Synchronize RBS on PTRACE_ATTACH

Russ Anderson (1):
      [IA64] Fix large MCA bootmem allocation

Tony Luck (2):
      [IA64] Wire up timerfd_{create,settime,gettime} syscalls
      [IA64] Simplify cpu_idle_wait




^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (133 preceding siblings ...)
  2008-02-08 22:46 ` Luck, Tony
@ 2008-02-09  5:04 ` Christoph Hellwig
  2008-02-11  7:37 ` Petr Tesarik
                   ` (2 subsequent siblings)
  137 siblings, 0 replies; 151+ messages in thread
From: Christoph Hellwig @ 2008-02-09  5:04 UTC (permalink / raw)
  To: linux-ia64

On Fri, Feb 08, 2008 at 02:46:25PM -0800, Luck, Tony wrote:
> Petr Tesarik (3):
>       [IA64] Rename TIF_PERFMON_WORK back to TIF_NOTIFY_RESUME
>       [IA64] Synchronize kernel RSE to user-space and back
>       [IA64] Synchronize RBS on PTRACE_ATTACH

This is still not killing the now unessecary find_thread_for_addr gunk
and the conversion to arch_ptrace.    Any reason that got delayed again?
Currently ia64 is one out of two architectures left still having it's
own sys_ptrace.

^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (134 preceding siblings ...)
  2008-02-09  5:04 ` Christoph Hellwig
@ 2008-02-11  7:37 ` Petr Tesarik
  2008-03-05  0:12 ` Luck, Tony
  2008-03-07  0:19 ` Luck, Tony
  137 siblings, 0 replies; 151+ messages in thread
From: Petr Tesarik @ 2008-02-11  7:37 UTC (permalink / raw)
  To: linux-ia64

[-- Attachment #1: Type: text/plain, Size: 681 bytes --]

Christoph Hellwig píše v So 09. 02. 2008 v 00:04 -0500:
> On Fri, Feb 08, 2008 at 02:46:25PM -0800, Luck, Tony wrote:
> > Petr Tesarik (3):
> >       [IA64] Rename TIF_PERFMON_WORK back to TIF_NOTIFY_RESUME
> >       [IA64] Synchronize kernel RSE to user-space and back
> >       [IA64] Synchronize RBS on PTRACE_ATTACH
> 
> This is still not killing the now unessecary find_thread_for_addr gunk
> and the conversion to arch_ptrace.    Any reason that got delayed again?
> Currently ia64 is one out of two architectures left still having it's
> own sys_ptrace.

No, it's on my TODO-list. Incidentally, I can continue work here again
this week. :)

Petr Tesarik


[-- Attachment #2: Toto je digitálně podepsaná část zprávy --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (135 preceding siblings ...)
  2008-02-11  7:37 ` Petr Tesarik
@ 2008-03-05  0:12 ` Luck, Tony
  2008-03-07  0:19 ` Luck, Tony
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2008-03-05  0:12 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/Kconfig                                  |    2 +
 arch/ia64/Makefile                                 |    2 +
 arch/ia64/{defconfig => configs/generic_defconfig} |    0 
 arch/ia64/ia32/ia32_signal.c                       |   13 ++-
 arch/ia64/kernel/iosapic.c                         |    4 +-
 arch/ia64/kernel/irq_ia64.c                        |  134 +++++++++++++++-----
 arch/ia64/kernel/kprobes.c                         |    5 +
 arch/ia64/kernel/msi_ia64.c                        |    3 +-
 arch/ia64/kernel/sal.c                             |    7 +
 arch/ia64/kernel/signal.c                          |   36 ++++--
 include/asm-ia64/Kbuild                            |    2 +-
 include/asm-ia64/hw_irq.h                          |   12 ++-
 include/asm-ia64/kprobes.h                         |    4 -
 include/asm-ia64/sal.h                             |    4 +
 14 files changed, 180 insertions(+), 48 deletions(-)
 rename arch/ia64/{defconfig => configs/generic_defconfig} (100%)

Adrian Bunk (2):
      [IA64] move defconfig to arch/ia64/configs/
      [IA64] fix ia64 kprobes compilation

Alex Chiang (1):
      [IA64] workaround tiger ia64_sal_get_physical_id_info hang

Doug Chapman (1):
      [IA64] move gcc_intrin.h from header-y to unifdef-y

Jes Sorensen (1):
      [IA64] CONFIG_SGI_SN2 - auto select NUMA and ACPI_NUMA

Kenji Kaneshige (1):
      [IA64] Fix irq migration in multiple vector domain

Shi Weihua (2):
      [IA64] signal(ia64): add a signal stack overflow check
      [IA64] signal(ia64_ia32): add a signal stack overflow check




^ permalink raw reply	[flat|nested] 151+ messages in thread

* git pull on ia64 linux tree
  2005-04-22 22:03 git pull on ia64 linux tree tony.luck
                   ` (136 preceding siblings ...)
  2008-03-05  0:12 ` Luck, Tony
@ 2008-03-07  0:19 ` Luck, Tony
  137 siblings, 0 replies; 151+ messages in thread
From: Luck, Tony @ 2008-03-07  0:19 UTC (permalink / raw)
  To: linux-ia64

Hi Linus,

please pull from:

	git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git release

This will update the files shown below.

Thanks!

-Tony

 arch/ia64/hp/common/hwsw_iommu.c        |    2 +-
 arch/ia64/hp/common/sba_iommu.c         |   36 ++--
 arch/ia64/hp/sim/simeth.c               |    2 +-
 arch/ia64/hp/sim/simserial.c            |    2 +-
 arch/ia64/ia32/sys_ia32.c               |    7 +-
 arch/ia64/kernel/crash.c                |    2 +-
 arch/ia64/kernel/efi.c                  |   32 +++-
 arch/ia64/kernel/iosapic.c              |   24 ++--
 arch/ia64/kernel/irq_ia64.c             |    8 +-
 arch/ia64/kernel/kprobes.c              |    2 +-
 arch/ia64/kernel/mca.c                  |   73 ++++----
 arch/ia64/kernel/module.c               |   22 +-
 arch/ia64/kernel/perfmon.c              |    4 +-
 arch/ia64/kernel/perfmon_default_smpl.c |    4 +-
 arch/ia64/kernel/ptrace.c               |  327 +++++++------------------------
 arch/ia64/kernel/setup.c                |    8 +-
 arch/ia64/kernel/unaligned.c            |    6 +-
 arch/ia64/kernel/unwind.c               |  102 +++++-----
 arch/ia64/mm/fault.c                    |    2 +-
 arch/ia64/mm/init.c                     |    2 +-
 arch/ia64/pci/fixup.c                   |    2 +-
 arch/ia64/pci/pci.c                     |    4 +-
 arch/ia64/sn/kernel/huberror.c          |    4 +-
 arch/ia64/sn/kernel/io_acpi_init.c      |   36 ++--
 arch/ia64/sn/kernel/io_common.c         |    2 +-
 arch/ia64/sn/kernel/io_init.c           |    4 +-
 arch/ia64/sn/kernel/mca.c               |    2 +-
 arch/ia64/sn/pci/pci_dma.c              |    6 +-
 arch/ia64/sn/pci/tioca_provider.c       |   12 +-
 arch/ia64/sn/pci/tioce_provider.c       |    4 +-
 include/asm-ia64/kprobes.h              |    2 +-
 include/asm-ia64/ptrace.h               |    9 +-
 32 files changed, 289 insertions(+), 465 deletions(-)

Bjorn Helgaas (2):
      [IA64] remove CONFIG_SMP ifdef in ia64_send_ipi()
      [IA64] use dev_printk in video quirk

Harvey Harrison (2):
      [IA64] remove remaining __FUNCTION__ occurrences
      [IA64] kprobes arch consolidation build fix

KOSAKI Motohiro (1):
      [IA64] remove unnecessary nfs includes from sys_ia32.c

Petr Tesarik (6):
      [IA64] access user RBS directly
      [IA64] do not sync RBS when changing PT_AR_BSP or PT_CFM
      [IA64] remove find_thread_for_addr()
      [IA64] convert sys_ptrace to arch_ptrace
      [IA64] remove duplicate code from arch_ptrace()
      [IA64] arch_ptrace() cleanup

Simon Horman (1):
      [IA64] update efi region debugging to use MB, GB and TB as well as KB




^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-28  1:08             ` Linus Torvalds
@ 2005-04-28  1:24               ` Petr Baudis
  0 siblings, 0 replies; 151+ messages in thread
From: Petr Baudis @ 2005-04-28  1:24 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Luck, Tony, git

Dear diary, on Thu, Apr 28, 2005 at 03:08:29AM CEST, I got a letter
where Linus Torvalds <torvalds@osdl.org> told me that...
> 
> 
> On Thu, 28 Apr 2005, Petr Baudis wrote:
> >
> > > (Which is not really nice, because it means that some files get updated 
> > > and others don't, depending on how they were merged, but whatever..)
> > 
> > We always do checkout-cache -f -a after we do merge-cache, so it should
> > end up in a consistent state.
> 
> I agree that for the common case it doesn't really matter, since we'll 
> always update the working directory regardless.
> 
> It was more of a conceptual complaint. We do everything else purely in the
> index, so it's a bit confusing that in that intermediate stage _some_
> files end up being up-to-date, and others end up not.

This actually came all the way from git-merge-one-file-script.

I don't think the intermediate stage matters at all, actually; from the
user's point of view it is nearly instantenous, and the tree keeps
changing during the merge anyway, when you are trying to resolve
non-exact merges by the merge utility. From the user's point of view,
the act of merging is atomic and you always end up with something
consistent, unless cg-merge is killed. But in that case it's all messed
up anyway and you'll better just cg-cancel and try again.

-- 
				Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
C++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor

^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-27 22:35 ` Linus Torvalds
  2005-04-27 22:58   ` Petr Baudis
@ 2005-04-28  1:13   ` Edgar Toernig
  1 sibling, 0 replies; 151+ messages in thread
From: Edgar Toernig @ 2005-04-28  1:13 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Luck, Tony, git

Linus Torvalds wrote:
> 
> One problem with this is that "grep" always thinks lines end in '\n', and 
> what we'd really want (from a scriptability angle) is
> 
> 	diff-tree -z -r $orig $final | grep -0 '^-'

Don't you think it's much easier to reject filenames with control
chars?  Forget all this -z/-0 stuff.  It only complicates life and
supporting filenames with embedded newlines is useless in practice.

--- x/update-cache.c Thu Apr 21 19:58:47 2005
+++ y/update-cache.c Thu Apr 28 02:55:27 2005
@@ -227,7 +227,8 @@
  * are hidden, for chist sake.
  *
  * Also, we don't want double slashes or slashes at the
- * end that can make pathnames ambiguous.
+ * end that can make pathnames ambiguous nor any control
+ * chars.
  */
 static int verify_path(char *path)
 {
@@ -237,6 +238,8 @@
 	for (;;) {
 		if (!c)
 			return 1;
+		if ((unsigned char)c < 32)
+			return 0;
 		if (c == '/') {
 inside:
 		c = *path++;


Ciao, ET.

^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-28  0:33           ` Petr Baudis
@ 2005-04-28  1:08             ` Linus Torvalds
  2005-04-28  1:24               ` Petr Baudis
  0 siblings, 1 reply; 151+ messages in thread
From: Linus Torvalds @ 2005-04-28  1:08 UTC (permalink / raw)
  To: Petr Baudis; +Cc: Luck, Tony, git



On Thu, 28 Apr 2005, Petr Baudis wrote:
>
> > (Which is not really nice, because it means that some files get updated 
> > and others don't, depending on how they were merged, but whatever..)
> 
> We always do checkout-cache -f -a after we do merge-cache, so it should
> end up in a consistent state.

I agree that for the common case it doesn't really matter, since we'll 
always update the working directory regardless.

It was more of a conceptual complaint. We do everything else purely in the
index, so it's a bit confusing that in that intermediate stage _some_
files end up being up-to-date, and others end up not.

		Linus

^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-28  0:21         ` Linus Torvalds
@ 2005-04-28  0:33           ` Petr Baudis
  2005-04-28  1:08             ` Linus Torvalds
  0 siblings, 1 reply; 151+ messages in thread
From: Petr Baudis @ 2005-04-28  0:33 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Luck, Tony, git

Dear diary, on Thu, Apr 28, 2005 at 02:21:19AM CEST, I got a letter
where Linus Torvalds <torvalds@osdl.org> told me that...
> 
> 
> On Thu, 28 Apr 2005, Petr Baudis wrote:
> > 
> > Hmm, doesn't the three-way read-tree -m take care of that? Then it
> > should hit
> 
> Yes, you're right, I didn't think about the fact that the helper script 
> actually does the checkout for the clashing files it merges.
> 
> (Which is not really nice, because it means that some files get updated 
> and others don't, depending on how they were merged, but whatever..)

We always do checkout-cache -f -a after we do merge-cache, so it should
end up in a consistent state.

-- 
				Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
C++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor

^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-28  0:07       ` Petr Baudis
@ 2005-04-28  0:21         ` Linus Torvalds
  2005-04-28  0:33           ` Petr Baudis
  0 siblings, 1 reply; 151+ messages in thread
From: Linus Torvalds @ 2005-04-28  0:21 UTC (permalink / raw)
  To: Petr Baudis; +Cc: Luck, Tony, git



On Thu, 28 Apr 2005, Petr Baudis wrote:
> 
> Hmm, doesn't the three-way read-tree -m take care of that? Then it
> should hit

Yes, you're right, I didn't think about the fact that the helper script 
actually does the checkout for the clashing files it merges.

(Which is not really nice, because it means that some files get updated 
and others don't, depending on how they were merged, but whatever..)

			Linus

^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-27 23:36     ` Linus Torvalds
@ 2005-04-28  0:07       ` Petr Baudis
  2005-04-28  0:21         ` Linus Torvalds
  0 siblings, 1 reply; 151+ messages in thread
From: Petr Baudis @ 2005-04-28  0:07 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Luck, Tony, git

Dear diary, on Thu, Apr 28, 2005 at 01:36:19AM CEST, I got a letter
where Linus Torvalds <torvalds@osdl.org> told me that...
> 
> 
> On Thu, 28 Apr 2005, Petr Baudis wrote:
> > 
> > Fixed and pushed out.
> 
> It looks like you only did the fix for the pure "just update to the 
> version at the other end" case. 
> 
> So if you actually end up doing a merge, it still leaves all the old files
> (that the merge may have removed from the tree) around. Or did I miss 
> something?

Hmm, doesn't the three-way read-tree -m take care of that? Then it
should hit

	#
	# deleted in one and unchanged in the other
	#
	"$1.$1" | "$1$1.")
		#echo "Removing $4"
		rm -f -- "$4"; update-cache --remove -- "$4"
		exit 0
		;;

in cg-Xmergefile.

-- 
				Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
C++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor

^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-27 22:58   ` Petr Baudis
  2005-04-27 23:19     ` Linus Torvalds
@ 2005-04-27 23:36     ` Linus Torvalds
  2005-04-28  0:07       ` Petr Baudis
  1 sibling, 1 reply; 151+ messages in thread
From: Linus Torvalds @ 2005-04-27 23:36 UTC (permalink / raw)
  To: Petr Baudis; +Cc: Luck, Tony, git



On Thu, 28 Apr 2005, Petr Baudis wrote:
> 
> Fixed and pushed out.

It looks like you only did the fix for the pure "just update to the 
version at the other end" case. 

So if you actually end up doing a merge, it still leaves all the old files
(that the merge may have removed from the tree) around. Or did I miss 
something?

		Linus

^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-27 22:58   ` Petr Baudis
@ 2005-04-27 23:19     ` Linus Torvalds
  2005-04-27 23:36     ` Linus Torvalds
  1 sibling, 0 replies; 151+ messages in thread
From: Linus Torvalds @ 2005-04-27 23:19 UTC (permalink / raw)
  To: Petr Baudis; +Cc: Luck, Tony, git



On Thu, 28 Apr 2005, Petr Baudis wrote:
> 
> Actually, grep has -z parameter. ;-)

Ahh. It's not even mentioned in the grep man-page (which mentions -Z, but 
that's for grep _output_, not input).

		Linus

^ permalink raw reply	[flat|nested] 151+ messages in thread

* Re: git pull on ia64 linux tree
  2005-04-27 22:35 ` Linus Torvalds
@ 2005-04-27 22:58   ` Petr Baudis
  2005-04-27 23:19     ` Linus Torvalds
  2005-04-27 23:36     ` Linus Torvalds
  2005-04-28  1:13   ` Edgar Toernig
  1 sibling, 2 replies; 151+ messages in thread
From: Petr Baudis @ 2005-04-27 22:58 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Luck, Tony, git

Dear diary, on Thu, Apr 28, 2005 at 12:35:07AM CEST, I got a letter
where Linus Torvalds <torvalds@osdl.org> told me that...
> One problem with this is that "grep" always thinks lines end in '\n', and 
> what we'd really want (from a scriptability angle) is
> 
> 	diff-tree -z -r $orig $final | grep -0 '^-'
> 
> but I don't think you can tell grep to think that lines are
> zero-terminated instead of terminated with \n'. But I don't see how to do
> that with grep.

Actually, grep has -z parameter. ;-)

Fixed and pushed out.

-- 
				Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
C++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor

^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
  2005-04-27 22:11 Luck, Tony
@ 2005-04-27 22:35 ` Linus Torvalds
  2005-04-27 22:58   ` Petr Baudis
  2005-04-28  1:13   ` Edgar Toernig
  0 siblings, 2 replies; 151+ messages in thread
From: Linus Torvalds @ 2005-04-27 22:35 UTC (permalink / raw)
  To: Luck, Tony; +Cc: git



On Wed, 27 Apr 2005, Luck, Tony wrote:
> 
> The merge is right ... but "cg-update" leaves files that have been
> deleted lying around in the checked out tree.

Yes. I _think_ the right thing to do ends up being something like the 
update script doing

	diff-tree -r $orig $final | grep '^-'

at the end to get the list of deleted files, and just doing 'rm' on the 
result.

One problem with this is that "grep" always thinks lines end in '\n', and 
what we'd really want (from a scriptability angle) is

	diff-tree -z -r $orig $final | grep -0 '^-'

but I don't think you can tell grep to think that lines are
zero-terminated instead of terminated with \n'. But I don't see how to do
that with grep.

Another similar alternative is to use "show-files --others" before and
after the merge and seeing what files got added to the list of "files we
don't track", but that just sounds horribly hacky.

Anyway, there are clearly at least two ways of doing this, and we'll just
have to have people work on the scripts to do it right..

		Linus

^ permalink raw reply	[flat|nested] 151+ messages in thread

* RE: git pull on ia64 linux tree
@ 2005-04-27 22:11 Luck, Tony
  2005-04-27 22:35 ` Linus Torvalds
  0 siblings, 1 reply; 151+ messages in thread
From: Luck, Tony @ 2005-04-27 22:11 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: git

>On Wed, 27 Apr 2005 tony.luck@intel.com wrote:
>> 
>> please pull from:
>> 
>> 	
>rsync://rsync.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git
>
>Merged and pushed out. You should probably check the end 
>result, but it all looks good from here.

The merge is right ... but "cg-update" leaves files that have been
deleted lying around in the checked out tree.

-Tony

^ permalink raw reply	[flat|nested] 151+ messages in thread

end of thread, other threads:[~2008-03-07  0:19 UTC | newest]

Thread overview: 151+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-04-22 22:03 git pull on ia64 linux tree tony.luck
2005-04-22 22:34 ` Linus Torvalds
2005-04-24  5:02   ` Sanjoy Mahajan
2005-04-25 21:31 ` tony.luck
2005-04-25 21:50 ` Luck, Tony
2005-07-07 16:01 ` Luck, Tony
2005-08-17 17:57 ` Luck, Tony
2005-08-23 15:01 ` Luck, Tony
2005-08-30 23:27 ` Luck, Tony
2005-08-31  3:10 ` Keith Owens
2005-08-31  3:56 ` Tony Luck
2005-08-31 11:28 ` Robin Holt
2005-09-11 22:43 ` Luck, Tony
2005-09-11 22:56 ` Linus Torvalds
2005-09-12  0:17 ` Keith Owens
2005-09-12  1:11 ` Luck, Tony
2005-09-12  3:19 ` Linus Torvalds
2005-09-12  3:24 ` Linus Torvalds
2005-09-12  3:37 ` Linus Torvalds
2005-09-12  4:05 ` Linus Torvalds
2005-09-12  4:39 ` Keith Owens
2005-09-12 14:49 ` Linus Torvalds
2005-09-12 15:13 ` Keith Owens
2005-09-12 17:51 ` David Mosberger-Tang
2005-10-11 22:11 ` Luck, Tony
2005-10-28 23:52 ` Luck, Tony
2005-10-28 23:57 ` Linus Torvalds
2005-10-29  0:01 ` Luck, Tony
2005-10-31 19:31 ` Luck, Tony
2005-11-07 22:09 ` Luck, Tony
2005-11-09  5:52 ` Luck, Tony
2005-11-10 23:27 ` Luck, Tony
2005-11-11 20:07 ` Luck, Tony
2005-11-29 21:56 ` Luck, Tony
2005-12-12 18:20 ` Luck, Tony
2005-12-13 20:12 ` Luck, Tony
2005-12-14 21:40 ` Luck, Tony
2005-12-16 21:12 ` Luck, Tony
2006-01-05 22:09 ` Luck, Tony
2006-01-14 13:43 ` Luck, Tony
2006-01-17  4:30 ` Luck, Tony
2006-01-20  0:03 ` Luck, Tony
2006-02-09  0:36 ` Luck, Tony
2006-02-10  0:56 ` Luck, Tony
2006-02-17  0:13 ` Luck, Tony
2006-02-28 19:03 ` Luck, Tony
2006-03-08 19:54 ` Luck, Tony
2006-03-08 20:01 ` Matthew Wilcox
2006-03-08 20:47 ` Luck, Tony
2006-03-08 21:56 ` Bjorn Helgaas
2006-03-09  9:50 ` Jes Sorensen
2006-03-11  0:34 ` Luck, Tony
2006-03-21 18:55 ` Luck, Tony
2006-03-24 22:57 ` Luck, Tony
2006-03-24 23:01 ` Luck, Tony
2006-03-26 19:01 ` Chen, Kenneth W
2006-03-27  0:16 ` KAMEZAWA Hiroyuki
2006-03-30 18:42 ` Luck, Tony
2006-04-01  1:11 ` Luck, Tony
2006-04-10 18:58 ` Luck, Tony
2006-04-13 23:01 ` Luck, Tony
2006-04-27 23:38 ` Luck, Tony
2006-05-05 20:04 ` Luck, Tony
2006-05-17 21:16 ` Luck, Tony
2006-06-23 22:24 ` Luck, Tony
2006-06-28 19:03 ` Luck, Tony
2006-08-03 19:18 ` Luck, Tony
2006-08-04 18:20 ` Luck, Tony
2006-08-29 17:39 ` Luck, Tony
2006-09-08 19:11 ` Luck, Tony
2006-09-27  0:15 ` Luck, Tony
2006-10-06 17:46 ` Luck, Tony
2006-10-06 18:09 ` Linus Torvalds
2006-10-18 15:52 ` Luck, Tony
2006-11-01  0:56 ` Luck, Tony
2006-11-16 19:30 ` Luck, Tony
2006-12-07  0:10 ` Luck, Tony
2006-12-07 23:13 ` Luck, Tony
2006-12-07 23:35 ` Luck, Tony
2006-12-13  2:04 ` Luck, Tony
2006-12-13 19:11 ` Luck, Tony
2006-12-13 21:58 ` Luck, Tony
2007-02-07  0:55 ` Luck, Tony
2007-03-07  0:35 ` Luck, Tony
2007-03-07  0:54 ` Luck, Tony
2007-03-08  1:09 ` Luck, Tony
2007-03-10  1:02 ` Luck, Tony
2007-03-20 22:11 ` Luck, Tony
2007-03-30  2:30 ` Luck, Tony
2007-04-10 20:58 ` Luck, Tony
2007-05-07 16:54 ` Luck, Tony
2007-05-08  1:13 ` Zou Nan hai
2007-05-08  7:26 ` Simon Horman
2007-05-09  2:41 ` Zou Nan hai
2007-05-09 20:28 ` Luck, Tony
2007-05-11 18:09 ` Luck, Tony
2007-05-16 17:45 ` Luck, Tony
2007-05-22 20:13 ` Luck, Tony
2007-05-24 23:41 ` Luck, Tony
2007-06-27 15:45 ` Luck, Tony
2007-07-12  0:04 ` Luck, Tony
2007-07-17 16:35 ` Luck, Tony
2007-07-20 18:54 ` Luck, Tony
2007-07-20 19:06 ` Linus Torvalds
2007-07-25 21:40 ` Luck, Tony
2007-07-27 23:40 ` Luck, Tony
2007-08-01 22:22 ` Luck, Tony
2007-08-17 23:25 ` Luck, Tony
2007-08-30 23:03 ` Luck, Tony
2007-08-31  4:50 ` Linus Torvalds
2007-08-31  8:37 ` Linus Torvalds
2007-08-31  8:53 ` Thomas Gleixner
2007-08-31 18:46 ` john stultz
2007-09-01 10:14 ` Luck, Tony
2007-09-01 10:19 ` Luck, Tony
2007-09-04  7:44 ` Linus Torvalds
2007-10-15 16:35 ` Luck, Tony
2007-10-15 22:21 ` Luck, Tony
2007-10-16 21:49 ` Luck, Tony
2007-10-17 22:06 ` Luck, Tony
2007-10-30 18:46 ` Luck, Tony
2007-11-09 23:09 ` Luck, Tony
2007-12-10 21:37 ` Luck, Tony
2007-12-10 22:45 ` Linus Torvalds
2007-12-10 23:07 ` Luck, Tony
2007-12-10 23:21 ` Luck, Tony
2007-12-11  3:11 ` Linus Torvalds
2007-12-11 17:45 ` Luck, Tony
2007-12-19 22:01 ` Luck, Tony
2008-01-03 23:07 ` Luck, Tony
2008-02-05 18:10 ` Luck, Tony
2008-02-06  4:45 ` Christoph Hellwig
2008-02-06 17:37 ` Luck, Tony
2008-02-07  8:49 ` Petr Tesarik
2008-02-07  8:49 ` Christoph Hellwig
2008-02-08 22:46 ` Luck, Tony
2008-02-09  5:04 ` Christoph Hellwig
2008-02-11  7:37 ` Petr Tesarik
2008-03-05  0:12 ` Luck, Tony
2008-03-07  0:19 ` Luck, Tony
2005-04-27 22:11 Luck, Tony
2005-04-27 22:35 ` Linus Torvalds
2005-04-27 22:58   ` Petr Baudis
2005-04-27 23:19     ` Linus Torvalds
2005-04-27 23:36     ` Linus Torvalds
2005-04-28  0:07       ` Petr Baudis
2005-04-28  0:21         ` Linus Torvalds
2005-04-28  0:33           ` Petr Baudis
2005-04-28  1:08             ` Linus Torvalds
2005-04-28  1:24               ` Petr Baudis
2005-04-28  1:13   ` Edgar Toernig

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.