14 Jan, 2009

35 commits

  • Signed-off-by: Heiko Carstens

    Heiko Carstens
     
  • Signed-off-by: Heiko Carstens

    Heiko Carstens
     
  • Signed-off-by: Heiko Carstens

    Heiko Carstens
     
  • Signed-off-by: Heiko Carstens

    Heiko Carstens
     
  • Signed-off-by: Heiko Carstens

    Heiko Carstens
     
  • Signed-off-by: Heiko Carstens

    Heiko Carstens
     
  • Signed-off-by: Heiko Carstens

    Heiko Carstens
     
  • Signed-off-by: Heiko Carstens

    Heiko Carstens
     
  • Signed-off-by: Heiko Carstens

    Heiko Carstens
     
  • Signed-off-by: Heiko Carstens

    Heiko Carstens
     
  • System calls with an unsigned long long argument can't be converted with
    the standard wrappers since that would include a cast to long, which in
    turn means that we would lose the upper 32 bit on 32 bit architectures.
    Also semctl can't use the standard wrapper since it has a 'union'
    parameter.

    So we handle them as special case and add some extra wrappers instead.

    Signed-off-by: Heiko Carstens

    Heiko Carstens
     
  • Signed-off-by: Heiko Carstens

    Heiko Carstens
     
  • This enables the use of syscall wrappers to do proper sign extension
    for 64-bit programs.

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Heiko Carstens

    Benjamin Herrenschmidt
     
  • From: Martin Schwidefsky

    By selecting HAVE_SYSCALL_WRAPPERS architectures can activate
    system call wrappers in order to sign extend system call arguments.

    All architectures where the ABI defines that the caller of a function
    has to perform sign extension probably need this.

    Reported-by: Christian Borntraeger
    Acked-by: Ralf Baechle
    Signed-off-by: Martin Schwidefsky
    Signed-off-by: Heiko Carstens

    Heiko Carstens
     
  • Remove the -ENOSYS implementation for !CONFIG_PRINTK and use
    the cond_syscall infrastructure instead.

    Acked-by: Kyle McMartin
    Signed-off-by: Heiko Carstens

    Heiko Carstens
     
  • Not a single architecture has wired up sys_pselect7 plus it is the
    only system call with seven parameters. Just make it static and
    rename it to do_pselect which will do the work for sys_pselect6.

    Signed-off-by: Heiko Carstens

    Heiko Carstens
     
  • Remove __attribute__((weak)) from common code sys_pipe implemantation.
    IA64, ALPHA, SUPERH (32bit) and SPARC (32bit) have own implemantations
    with the same name. Just rename them.
    For sys_pipe2 there is no architecture specific implementation.

    Cc: Richard Henderson
    Cc: David S. Miller
    Cc: Paul Mundt
    Cc: Tony Luck
    Signed-off-by: Heiko Carstens

    Heiko Carstens
     
  • This way it matches the generic system call name convention.

    Signed-off-by: Heiko Carstens

    Heiko Carstens
     
  • Convert all system calls to return a long. This should be a NOP since all
    converted types should have the same size anyway.
    With the exception of sys_exit_group which returned void. But that doesn't
    matter since the system call doesn't return.

    Signed-off-by: Heiko Carstens

    Heiko Carstens
     
  • Move declarations to correct header file.

    Signed-off-by: Heiko Carstens

    Heiko Carstens
     
  • * 'x86-pat-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86 PAT: remove CPA WARN_ON for zero pte
    x86 PAT: return compatible mapping to remap_pfn_range callers
    x86 PAT: change track_pfn_vma_new to take pgprot_t pointer param
    x86 PAT: consolidate old memtype new memtype check into a function
    x86 PAT: remove PFNMAP type on track_pfn_vma_new() error

    Linus Torvalds
     
  • * master.kernel.org:/home/rmk/linux-2.6-arm:
    TWL4030: fix clk API usage
    [ARM] 5364/1: allow flush_ioremap_region() to be used from modules
    [ARM] w90x900: fix build errors and warnings
    [ARM] i.MX add missing include
    [ARM] i.MX: fix breakage from commit 278892736e99330195c8ae5861bcd9d791bbf19e
    [ARM] i.MX: remove LCDC controller register definitions from imx-regs.h

    Linus Torvalds
     
  • Since we (Analog Devices) updated our Blackfin kernel to 2.6.28, we've
    seen occasional 5-second hangs from telnet. telnetd calls select with a
    NULL timeout, but with the new kernel, the system call occasionally
    returns 0, which causes telnet to call sleep (5). This did not happen
    with earlier kernels.

    The code in sys_pselect7 looks a bit strange, in particular the variable
    "to" is initialized to NULL, then changed if a non-null timeout was
    passed in, but not used further. It needs to be passed to
    core_sys_select instead of &end_time.

    This bug was introduced by 8ff3e8e85fa6c312051134b3953e397feb639f51
    ("select: switch select() and poll() over to hrtimers").

    Signed-off-by: Bernd Schmidt
    Reviewed-by: Ulrich Drepper
    Tested-by: Robin Getz
    Cc: stable@kernel.org
    Signed-off-by: Linus Torvalds

    Bernd Schmidt
     
  • Commit b430428a188e8a434325e251d0704af4b88b4711 ("8250: Don't clobber
    spinlocks.") introduced a regression on the parisc architecture, which
    broke the handover to the serial port at boottime.

    early_serial_setup() was changed to only copy a subset of the uart_port
    fields, and sadly the "type" and "line" fields were forgotten and thus
    the serial port was not initialized and could not be used for a
    handover. This patch fixes this by copying the missing fields.

    As this change to early_serial_setup() doesn't need an initialized
    spinlock in the uart_port struct any longer, we can drop the spinlock
    initialization in the superio driver.

    Cc: David Daney
    Cc: Tomaso Paoletti
    Cc: Andrew Morton
    Cc: Alan Cox
    Acked-by: Kyle McMartin
    Cc: linux-parisc@vger.kernel.org
    Signed-off-by: Helge Deller
    Signed-off-by: Linus Torvalds

    Helge Deller
     
  • Always pass a struct device if one is available; and there's really
    no reason for the processor specific stuff in this file if only
    people would follow the API usage properly by using the struct device.

    Signed-off-by: Russell King

    Russell King
     
  • Impact: reduce scope of debug check - avoid warnings

    The logic to find whether identity map exists or not using
    high_memory or max_low_pfn_mapped/max_pfn_mapped are not complete
    as the memory withing the range may not be mapped if there is a
    unusable hole in e820.

    Specifically, on my test system I started seeing these warnings with
    tools like hwinfo, acpidump trying to map ACPI region.

    [ 27.400018] ------------[ cut here ]------------
    [ 27.400344] WARNING: at /home/venkip/src/linus/linux-2.6/arch/x86/mm/pageattr.c:560 __change_page_attr_set_clr+0xf3/0x8b8()
    [ 27.400821] Hardware name: X7DB8
    [ 27.401070] CPA: called for zero pte. vaddr = ffff8800cff6a000 cpa->vaddr = ffff8800cff6a000
    [ 27.401569] Modules linked in:
    [ 27.401882] Pid: 4913, comm: dmidecode Not tainted 2.6.28-05716-gfe0bdec #586
    [ 27.402141] Call Trace:
    [ 27.402488] [] warn_slowpath+0xd3/0x10f
    [ 27.402749] [] ? find_get_page+0xb3/0xc9
    [ 27.403028] [] ? find_get_page+0x0/0xc9
    [ 27.403333] [] __change_page_attr_set_clr+0xf3/0x8b8
    [ 27.403628] [] ? __purge_vmap_area_lazy+0x192/0x1a1
    [ 27.403883] [] ? __purge_vmap_area_lazy+0x4b/0x1a1
    [ 27.404172] [] ? vm_unmap_aliases+0x1ab/0x1bb
    [ 27.404512] [] ? vm_unmap_aliases+0x48/0x1bb
    [ 27.404766] [] change_page_attr_set_clr+0x13e/0x2e6
    [ 27.405026] [] ? _spin_unlock+0x26/0x2a
    [ 27.405292] [] ? reserve_memtype+0x19b/0x4e3
    [ 27.405590] [] _set_memory_wb+0x22/0x24
    [ 27.405844] [] ioremap_change_attr+0x26/0x28
    [ 27.406097] [] reserve_pfn_range+0x1a3/0x235
    [ 27.406427] [] track_pfn_vma_new+0x49/0xb3
    [ 27.406686] [] remap_pfn_range+0x94/0x32c
    [ 27.406940] [] ? phys_mem_access_prot_allowed+0xb5/0x1a8
    [ 27.407209] [] mmap_mem+0x75/0x9d
    [ 27.407523] [] mmap_region+0x2cf/0x53e
    [ 27.407776] [] do_mmap_pgoff+0x2a9/0x30d
    [ 27.408034] [] sys_mmap+0x92/0xce
    [ 27.408339] [] system_call_fastpath+0x16/0x1b
    [ 27.408614] ---[ end trace 4b16ad70c09a602d ]---
    [ 27.408871] dmidecode:4913 reserve_pfn_range ioremap_change_attr failed write-back for cff6a000-cff6b000

    This is wih track_pfn_vma_new trying to keep identity map in sync.
    The address cff6a000 is the ACPI region according to e820.

    [ 0.000000] BIOS-provided physical RAM map:
    [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009c000 (usable)
    [ 0.000000] BIOS-e820: 000000000009c000 - 00000000000a0000 (reserved)
    [ 0.000000] BIOS-e820: 00000000000cc000 - 00000000000d0000 (reserved)
    [ 0.000000] BIOS-e820: 00000000000e4000 - 0000000000100000 (reserved)
    [ 0.000000] BIOS-e820: 0000000000100000 - 00000000cff60000 (usable)
    [ 0.000000] BIOS-e820: 00000000cff60000 - 00000000cff69000 (ACPI data)
    [ 0.000000] BIOS-e820: 00000000cff69000 - 00000000cff80000 (ACPI NVS)
    [ 0.000000] BIOS-e820: 00000000cff80000 - 00000000d0000000 (reserved)
    [ 0.000000] BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
    [ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved)
    [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
    [ 0.000000] BIOS-e820: 00000000ff000000 - 0000000100000000 (reserved)
    [ 0.000000] BIOS-e820: 0000000100000000 - 0000000230000000 (usable)

    And is not mapped as per init_memory_mapping.

    [ 0.000000] init_memory_mapping: 0000000000000000-00000000cff60000
    [ 0.000000] init_memory_mapping: 0000000100000000-0000000230000000

    We can add logic to check for this. But, there can also be other holes in
    identity map when we have 1GB of aligned reserved space in e820.

    This patch handles it by removing the WARN_ON and returning a specific
    error value (EFAULT) to indicate that the address does not have any
    identity mapping.

    The code that tries to keep identity map in sync can ignore
    this error, with other callers of cpa still getting error here.

    Signed-off-by: Venkatesh Pallipadi
    Signed-off-by: Suresh Siddha
    Signed-off-by: Ingo Molnar

    venkatesh.pallipadi@intel.com
     
  • Impact: avoid warning message, potentially solve 3D performance regression

    Change x86 PAT code to return compatible memtype if the exact memtype that
    was requested in remap_pfn_rage and friends is not available due to some
    conflict.

    This is done by returning the compatible type in pgprot parameter of
    track_pfn_vma_new(), and the caller uses that memtype for page table.

    Note that track_pfn_vma_copy() which is basically called during fork gets the
    prot from existing page table and should not have any conflict. Hence we use
    strict memtype check there and do not allow compatible memtypes.

    This patch fixes the bug reported here:

    http://marc.info/?l=linux-kernel&m=123108883716357&w=2

    Specifically the error message:

    X:5010 map pfn expected mapping type write-back for d0000000-d0101000,
    got write-combining

    Should go away.

    Reported-and-bisected-by: Kevin Winchester
    Signed-off-by: Venkatesh Pallipadi
    Signed-off-by: Suresh Siddha
    Signed-off-by: Ingo Molnar

    venkatesh.pallipadi@intel.com
     
  • Impact: cleanup

    Change the protection parameter for track_pfn_vma_new() into a pgprot_t pointer.
    Subsequent patch changes the x86 PAT handling to return a compatible
    memtype in pgprot_t, if what was requested cannot be allowed due to conflicts.
    No fuctionality change in this patch.

    Signed-off-by: Venkatesh Pallipadi
    Signed-off-by: Suresh Siddha
    Signed-off-by: Ingo Molnar

    venkatesh.pallipadi@intel.com
     
  • Impact: cleanup

    Move the new memtype old memtype allowed check to header so that is can be
    shared by other users. Subsequent patch uses this in pat.c in remap_pfn_range()
    code path. No functionality change in this patch.

    Signed-off-by: Venkatesh Pallipadi
    Signed-off-by: Suresh Siddha
    Signed-off-by: Ingo Molnar

    venkatesh.pallipadi@intel.com
     
  • Impact: fix (harmless) double-free of memtype entries and avoid warning

    On track_pfn_vma_new() failure, reset the vm_flags so that there will be
    no second cleanup happening when upper level routines call unmap_vmas().

    This patch fixes part of the bug reported here:

    http://marc.info/?l=linux-kernel&m=123108883716357&w=2

    Specifically the error message:

    X:5010 freeing invalid memtype d0000000-d0101000

    Is due to multiple frees on error path, will not happen with the patch below.

    Signed-off-by: Venkatesh Pallipadi
    Signed-off-by: Suresh Siddha
    Signed-off-by: Ingo Molnar

    venkatesh.pallipadi@intel.com
     
  • …git/tip/linux-2.6-tip

    * 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    Revert "i386: add TRACE_IRQS_OFF for the nmi"

    Linus Torvalds
     
  • …/git/tip/linux-2.6-tip

    * 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    smp_call_function_single(): be slightly less stupid, fix #2
    lockdep, mm: fix might_fault() annotation

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband:
    IB/iser: Add dependency on INFINIBAND_ADDR_TRANS
    IPoIB: Do not join broadcast group if interface is brought down
    RDMA/nes: Fix for NIPQUAD removal
    IPoIB: Fix loss of connectivity after bonding failover on both sides
    IB/mlx4: Don't register IB device for adapters with no IB ports
    mlx4_core: Fix warning from min()
    IB/ehca: spin_lock_irqsave() takes an unsigned long

    Linus Torvalds
     
  • * 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
    pata_it821x: Update RDC UDMA handling
    ata: fix wrong WARN_ON_ONCE

    Linus Torvalds
     
  • With some broken BIOSs when VT-d is enabled, the data structures are
    filled incorrectly. This can cause a NULL pointer dereference in very
    early boot.

    Signed-off-by: Dirk Hohndel
    Acked-by: Yu Zhao
    Signed-off-by: David Woodhouse
    Signed-off-by: Linus Torvalds

    Dirk Hohndel
     

13 Jan, 2009

5 commits

  • The UDMA affliction is apparently specific to revision 0x11. Keeps us in sync
    with drivers/ide current.

    Signed-off-by: Alan Cox
    Signed-off-by: Jeff Garzik

    Alan Cox
     
  • This patch fixes a wrong WARN_ON that was triggered by 32bit PIO support:
    WARNING: at drivers/ata/libata-sff.c:1017 ata_sff_hsm_move+0x45e/0x750()

    __atapi_pio_bytes simply doesnt know enough to decide if there is a bug.

    Signed-off-by: Christian Borntraeger
    Signed-off-by: Jeff Garzik

    Christian Borntraeger
     
  • Roland Dreier
     
  • Fix ib_iser build to depend on INFINIBAND_ADDR_TRANS; if INET=y but
    IPV6=n, then the RDMA CM is not built but INFINIBAND_ISER can be
    enabled, leading to:

    ERROR: "rdma_destroy_id" [drivers/infiniband/ulp/iser/ib_iser.ko] undefined!
    ERROR: "rdma_connect" [drivers/infiniband/ulp/iser/ib_iser.ko] undefined!
    ERROR: "rdma_destroy_qp" [drivers/infiniband/ulp/iser/ib_iser.ko] undefined!
    ERROR: "rdma_create_id" [drivers/infiniband/ulp/iser/ib_iser.ko] undefined!
    ERROR: "rdma_create_qp" [drivers/infiniband/ulp/iser/ib_iser.ko] undefined!
    ERROR: "rdma_resolve_route" [drivers/infiniband/ulp/iser/ib_iser.ko] undefined!
    ERROR: "rdma_disconnect" [drivers/infiniband/ulp/iser/ib_iser.ko] undefined!
    ERROR: "rdma_resolve_addr" [drivers/infiniband/ulp/iser/ib_iser.ko] undefined!

    Signed-off-by: Randy Dunlap

    Randy Dunlap
     
  • Because the ipoib_workqueue is not flushed when ipoib interface is
    brought down, ipoib_mcast_join() may trigger a join to the broadcast
    group after priv->broadcast was set to NULL (during cleanup). This
    will cause the system to be a member of the broadcast group when
    interface is down. As a side effect, this breaks the optimization of
    setting the Q_key only when joining the broadcast group.

    Signed-off-by: Yossi Etigin
    Signed-off-by: Roland Dreier

    Yossi Etigin