30 Sep, 2011

1 commit

  • Apple Quad G5 has some oddity in it's device-tree which causes the new
    generic matching code to fail to relate nodes for PCI-E devices below U4
    with their respective struct pci_dev. This breaks graphics on those
    machines among others.

    This fixes it using a quirk which copies the node pointer from the host
    bridge for the root complex, which makes the generic code work for the
    children afterward.

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Linus Torvalds

    Benjamin Herrenschmidt
     

31 Aug, 2011

4 commits


30 Aug, 2011

1 commit

  • These were missed in commit f5b940997397 "All Arch: remove linkage
    for sys_nfsservctl system call" due to them having no sys_ prefix
    (presumably).

    Cc: NeilBrown
    Cc: linuxppc-dev@lists.ozlabs.org
    Cc: linux-parisc@vger.kernel.org
    Signed-off-by: Stephen Rothwell
    Acked-by: James Bottomley
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     

26 Aug, 2011

1 commit

  • This bug causes the IECSR register clear failure. In this case, the RETE
    (retry error threshold exceeded) interrupt will be generated and cannot be
    cleared. So the related ISR may be called persistently.

    The RETE bit in IECSR is cleared by writing a 1 to it.

    Signed-off-by: Liu Gang
    Cc: Benjamin Herrenschmidt
    Cc: Kumar Gala
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Liu Gang-B34182
     

10 Aug, 2011

1 commit


05 Aug, 2011

17 commits

  • Commit fea80311a939a746533a6d7e7c3183729d6a3faf
    "iomap: make IOPORT/PCI mapping functions conditional"

    Broke powerpc build without CONFIG_PCI as we would still define
    pci_iomap(), which overlaps with the new empty inline in the headers.

    Make our implementation conditional on CONFIG_PCI

    Signed-off-by: Benjamin Herrenschmidt

    Benjamin Herrenschmidt
     
  • Commit 112d1fe9f7715db423ffeec5ac1beccff6093dc4
    "powerpc/4xx: Add check_link to struct ppc4xx_pciex_hwops" inadvertently
    broke 405 builds due to some functions being over protected by an
    ifdef CONFIG_44x.

    Move them back out.

    Signed-off-by: Benjamin Herrenschmidt

    Benjamin Herrenschmidt
     
  • The VPA, SLB shadow and DTL degistration functions do not need an
    address, so simplify things and remove it.

    Also cleanup pseries_kexec_cpu_down a bit by storing the cpu IDs
    in local variables.

    Signed-off-by: Anton Blanchard
    Signed-off-by: Benjamin Herrenschmidt

    Anton Blanchard
     
  • Make the VPA, SLB shadow and DTL registration and deregistration
    functions print consistent messages on error. I needed the firmware
    error code while chasing a kexec bug but we weren't printing it.

    Signed-off-by: Anton Blanchard
    Signed-off-by: Benjamin Herrenschmidt

    Anton Blanchard
     
  • Recent versions of firmware will fail to unmap the virtual processor
    area if we have a dispatch trace log registered. This causes kexec
    to fail.

    If a trace log is registered this patch unregisters it before the
    SLB shadow and virtual processor areas, fixing the problem.

    The address argument is ignored by firmware on unregister so we
    may as well remove it.

    Signed-off-by: Anton Blanchard
    Cc:
    Signed-off-by: Benjamin Herrenschmidt

    Anton Blanchard
     
  • KVM_GUEST adds a 1 MB array to the kernel (kvm_tmp) which grew
    my kernel enough to cause it to fail to boot.

    Dynamically allocating or reducing the size of this array is a
    good idea, but in the meantime I think it makes sense to make
    KVM_GUEST default to n in order to minimise surprises.

    Signed-off-by: Anton Blanchard
    Signed-off-by: Benjamin Herrenschmidt

    Anton Blanchard
     
  • On a box with gcc 4.3.2, I see errors like:

    arch/powerpc/kvm/book3s_hv_rmhandlers.S:1254: Error: Unrecognized opcode: stxvd2x
    arch/powerpc/kvm/book3s_hv_rmhandlers.S:1316: Error: Unrecognized opcode: lxvd2x

    Signed-off-by: Nishanth Aravamudan
    Signed-off-by: Benjamin Herrenschmidt

    Nishanth Aravamudan
     
  • The ibm,io-events code is a bit verbose with its error messages.
    Reverse the reporting so we only print when we successfully enable
    I/O event interrupts.

    Signed-off-by: Anton Blanchard
    Signed-off-by: Benjamin Herrenschmidt

    Anton Blanchard
     
  • We are seeing boot failures on some very large boxes even with
    commit b5416ca9f824 (powerpc: Move kdump default base address to
    64MB on 64bit).

    This patch halves the RMO so both kernels get about the same
    amount of RMO memory. On large machines this region will be
    at least 256MB, so each kernel will get 128MB.

    We cap it at 256MB (small SLB size) since some early allocations need
    to be in the bolted SLB region. We could relax this on machines with
    1TB SLBs in a future patch.

    Signed-off-by: Anton Blanchard
    Signed-off-by: Benjamin Herrenschmidt

    Anton Blanchard
     
  • Panic observed on an older kernel when collecting call chains for
    the context-switch software event:

    []rb_erase+0x1b4/0x3e8
    []__dequeue_entity+0x50/0xe8
    []set_next_entity+0x178/0x1bc
    []pick_next_task_fair+0xb0/0x118
    []schedule+0x500/0x614
    []rwsem_down_failed_common+0xf0/0x264
    []rwsem_down_read_failed+0x34/0x54
    []down_read+0x3c/0x54
    []do_page_fault+0x114/0x5e8
    []handle_page_fault+0xc/0x80
    []perf_callchain+0x224/0x31c
    []perf_prepare_sample+0x240/0x2fc
    []__perf_event_overflow+0x280/0x398
    []perf_swevent_overflow+0x9c/0x10c
    []perf_swevent_ctx_event+0x1d0/0x230
    []do_perf_sw_event+0x84/0xe4
    []perf_sw_event_context_switch+0x150/0x1b4
    []perf_event_task_sched_out+0x44/0x2d4
    []schedule+0x2c0/0x614
    []__cond_resched+0x34/0x90
    []_cond_resched+0x4c/0x68
    []move_page_tables+0xb0/0x418
    []setup_arg_pages+0x184/0x2a0
    []load_elf_binary+0x394/0x1208
    []search_binary_handler+0xe0/0x2c4
    []do_execve+0x1bc/0x268
    []sys_execve+0x84/0xc8
    []ret_from_syscall+0x0/0x3c

    A page fault occurred walking the callchain while creating a perf
    sample for the context-switch event. To handle the page fault the
    mmap_sem is needed, but it is currently held by setup_arg_pages.
    (setup_arg_pages calls shift_arg_pages with the mmap_sem held.
    shift_arg_pages then calls move_page_tables which has a cond_resched
    at the top of its for loop - hitting that cond_resched is what caused
    the context switch.)

    This is an extension of Anton's proposed patch:
    https://lkml.org/lkml/2011/7/24/151
    adding case for 32-bit ppc.

    Tested on the system that first generated the panic and then again
    with latest kernel using a PPC VM. I am not able to test the 64-bit
    path - I do not have H/W for it and 64-bit PPC VMs (qemu on Intel)
    is horribly slow.

    Signed-off-by: David Ahern
    Signed-off-by: Benjamin Herrenschmidt

    David Ahern
     
  • One definition of PV_POWER7 seems enough to me.

    Signed-off-by: Peter Zijlstra
    Signed-off-by: Benjamin Herrenschmidt

    Peter Zijlstra
     
  • On a box with 8TB of RAM the MMU hashtable is 64GB in size. That
    means we have 4G PTEs. pSeries_lpar_hptab_clear was using a signed
    int to store the index which will overflow at 2G.

    Signed-off-by: Anton Blanchard
    Cc:
    Acked-by: Michael Neuling
    Signed-off-by: Benjamin Herrenschmidt

    Anton Blanchard
     
  • I hit an oops at boot on the first instruction of timer_cpu_notify:

    NIP [c000000000722f88] .timer_cpu_notify+0x0/0x388

    The code should look like:

    c000000000722f78: eb e9 00 30 ld r31,48(r9)
    c000000000722f7c: 2f bf 00 00 cmpdi cr7,r31,0
    c000000000722f80: 40 9e ff 44 bne+ cr7,c000000000722ec4
    c000000000722f84: 4b ff ff 74 b c000000000722ef8

    c000000000722f88 :
    c000000000722f88: 7c 08 02 a6 mflr r0
    c000000000722f8c: 2f a4 00 07 cmpdi cr7,r4,7
    c000000000722f90: fb c1 ff f0 std r30,-16(r1)
    c000000000722f94: fb 61 ff d8 std r27,-40(r1)

    But the oops output shows:

    eb61ffd8 eb81ffe0 eba1ffe8 ebc1fff0 7c0803a6 ebe1fff8 4e800020
    00000000 ebe90030 c0000000 00ad0a28 00000000 2fa40007 fbc1fff0 fb61ffd8

    So we scribbled over our instructions with c000000000ad0a28, which
    is an address inside the jump_table ELF section.

    It turns out the jump_table section is only aligned to 8 bytes but
    we are aligning our entries within the section to 16 bytes. This
    means our entries are offset from the table:

    c000000000acd4a8 :
    ...
    c000000000ad0a10: c0 00 00 00 lfs f0,0(0)
    c000000000ad0a14: 00 70 cd 5c .long 0x70cd5c
    c000000000ad0a18: c0 00 00 00 lfs f0,0(0)
    c000000000ad0a1c: 00 70 cd 90 .long 0x70cd90
    c000000000ad0a20: c0 00 00 00 lfs f0,0(0)
    c000000000ad0a24: 00 ac a4 20 .long 0xaca420

    And the jump table sort code gets very confused and writes into the
    wrong spot. Remove the alignment, and also remove the padding since
    we it saves some space and we shouldn't need it.

    Signed-off-by: Anton Blanchard
    Signed-off-by: Benjamin Herrenschmidt

    Anton Blanchard
     
  • Add a newline to the panic messages in make_room. Also fix a
    comment that suggested our chunk size is 4Mb. It's 1MB.

    Signed-off-by: Anton Blanchard
    Signed-off-by: Benjamin Herrenschmidt

    Anton Blanchard
     
  • I have a box that fails in OF during boot with:

    DEFAULT CATCH!, exception-handler=fff00400
    at %SRR0: 49424d2c4c6f6768 %SRR1: 800000004000b002

    ie "IBM,Logh". OF got corrupted with a device tree string.

    Looking at make_room and alloc_up, we claim the first chunk (1 MB)
    but we never claim any more. mem_end is always set to alloc_top
    which is the top of our available address space, guaranteeing we will
    never call alloc_up and claim more memory.

    Also alloc_up wasn't setting alloc_bottom to the bottom of the
    available address space.

    This doesn't help the box to boot, but we at least fail with
    an obvious error. We could relocate the device tree in a future
    patch.

    Signed-off-by: Anton Blanchard
    Cc:
    Signed-off-by: Benjamin Herrenschmidt

    Anton Blanchard
     
  • Commit af9eef3c7b1ed004c378c89b87642f4937337d50 caused cpu_setup to see
    the_cpu_spec, rather than the source struct. However, on 32-bit, the
    return value of identify_cpu was being used for feature fixups, and
    identify_cpu was returning the source struct. So if cpu_setup patches
    the feature bits, the update won't affect the fixups.

    Signed-off-by: Scott Wood
    Signed-off-by: Benjamin Herrenschmidt

    Scott Wood
     
  • Add a cast in case the caller passes in a different type, as it would
    if mtspr/mtmsr were functions.

    Previously, if a 64-bit type was passed in on 32-bit, GCC would bind the
    constraint to a pair of registers, and would substitute the first register
    in the pair in the asm code. This corresponds to the upper half of the
    64-bit register, which is generally not the desired behavior.

    Signed-off-by: Scott Wood
    Signed-off-by: Benjamin Herrenschmidt

    Scott Wood
     

03 Aug, 2011

2 commits

  • Some trivial conflicts due to other various merges
    adding to the end of common lists sooner than this one.

    arch/ia64/Kconfig
    arch/powerpc/Kconfig
    arch/x86/Kconfig
    lib/Kconfig
    lib/Makefile

    Signed-off-by: Len Brown

    Len Brown
     
  • cmpxchg() is widely used by lockless code, including NMI-safe lockless
    code. But on some architectures, the cmpxchg() implementation is not
    NMI-safe, on these architectures the lockless code may need a
    spin_trylock_irqsave() based implementation.

    This patch adds a Kconfig option: ARCH_HAVE_NMI_SAFE_CMPXCHG, so that
    NMI-safe lockless code can depend on it or provide different
    implementation according to it.

    On many architectures, cmpxchg is only NMI-safe for several specific
    operand sizes. So, ARCH_HAVE_NMI_SAFE_CMPXCHG define in this patch
    only guarantees cmpxchg is NMI-safe for sizeof(unsigned long).

    Signed-off-by: Huang Ying
    Acked-by: Mike Frysinger
    Acked-by: Paul Mundt
    Acked-by: Hans-Christian Egtvedt
    Acked-by: Benjamin Herrenschmidt
    Acked-by: Chris Metcalf
    Acked-by: Richard Henderson
    CC: Mikael Starvik
    Acked-by: David Howells
    CC: Yoshinori Sato
    CC: Tony Luck
    CC: Hirokazu Takata
    CC: Geert Uytterhoeven
    CC: Michal Simek
    Acked-by: Ralf Baechle
    CC: Kyle McMartin
    CC: Martin Schwidefsky
    CC: Chen Liqin
    CC: "David S. Miller"
    CC: Ingo Molnar
    CC: Chris Zankel
    Signed-off-by: Len Brown

    Huang Ying
     

27 Jul, 2011

6 commits

  • …git/arm/linux-arm-soc

    * 'next/cross-platform' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/linux-arm-soc:
    ARM: Consolidate the clkdev header files
    ARM: set vga memory base at run-time
    ARM: convert PCI defines to variables
    ARM: pci: make pcibios_assign_all_busses use pci_has_flag
    ARM: remove unnecessary mach/hardware.h includes
    pci: move microblaze and powerpc pci flag functions into asm-generic
    powerpc: rename ppc_pci_*_flags to pci_*_flags

    Fix up conflicts in arch/microblaze/include/asm/pci-bridge.h

    Linus Torvalds
     
  • After changing all consumers of atomics to include , we
    ran into some compile time errors due to this dependency chain:

    linux/atomic.h
    -> asm/atomic.h
    -> asm-generic/atomic-long.h

    where atomic-long.h could use funcs defined later in linux/atomic.h
    without a prototype. This patches moves the code that includes
    asm-generic/atomic*.h to linux/atomic.h.

    Archs that need need to select
    CONFIG_GENERIC_ATOMIC64 from now on (some of them used to include it
    unconditionally).

    Compile tested on i386 and x86_64 with allnoconfig.

    Signed-off-by: Arun Sharma
    Cc: Eric Dumazet
    Cc: Ingo Molnar
    Cc: David Miller
    Acked-by: Mike Frysinger
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arun Sharma
     
  • This is in preparation for more generic atomic primitives based on
    __atomic_add_unless.

    Signed-off-by: Arun Sharma
    Signed-off-by: Hans-Christian Egtvedt
    Reviewed-by: Eric Dumazet
    Cc: Ingo Molnar
    Cc: David Miller
    Acked-by: Mike Frysinger
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arun Sharma
     
  • This allows us to move duplicated code in
    (atomic_inc_not_zero() for now) to

    Signed-off-by: Arun Sharma
    Reviewed-by: Eric Dumazet
    Cc: Ingo Molnar
    Cc: David Miller
    Cc: Eric Dumazet
    Acked-by: Mike Frysinger
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arun Sharma
     
  • The majority of architectures implement ext2 atomic bitops as
    test_and_{set,clear}_bit() without spinlock.

    This adds this type of generic implementation in ext2-atomic-setbit.h and
    use it wherever possible.

    Signed-off-by: Akinobu Mita
    Suggested-by: Andreas Dilger
    Suggested-by: Arnd Bergmann
    Acked-by: Arnd Bergmann
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Akinobu Mita
     
  • [ poleg@redhat.com: no need to declare show_regs() in ptrace.h, sched.h does this ]
    Signed-off-by: Mike Frysinger
    Cc: Tejun Heo
    Signed-off-by: Oleg Nesterov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mike Frysinger
     

26 Jul, 2011

4 commits

  • * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (99 commits)
    drivers/virt: add missing linux/interrupt.h to fsl_hypervisor.c
    powerpc/85xx: fix mpic configuration in CAMP mode
    powerpc: Copy back TIF flags on return from softirq stack
    powerpc/64: Make server perfmon only built on ppc64 server devices
    powerpc/pseries: Fix hvc_vio.c build due to recent changes
    powerpc: Exporting boot_cpuid_phys
    powerpc: Add CFAR to oops output
    hvc_console: Add kdb support
    powerpc/pseries: Fix hvterm_raw_get_chars to accept < 16 chars, fixing xmon
    powerpc/irq: Quieten irq mapping printks
    powerpc: Enable lockup and hung task detectors in pseries and ppc64 defeconfigs
    powerpc: Add mpt2sas driver to pseries and ppc64 defconfig
    powerpc: Disable IRQs off tracer in ppc64 defconfig
    powerpc: Sync pseries and ppc64 defconfigs
    powerpc/pseries/hvconsole: Fix dropped console output
    hvc_console: Improve tty/console put_chars handling
    powerpc/kdump: Fix timeout in crash_kexec_wait_realmode
    powerpc/mm: Fix output of total_ram.
    powerpc/cpufreq: Add cpufreq driver for Momentum Maple boards
    powerpc: Correct annotations of pmu registration functions
    ...

    Fix up trivial Kconfig/Makefile conflicts in arch/powerpc, drivers, and
    drivers/cpufreq

    Linus Torvalds
     
  • * Merge akpm patch series: (122 commits)
    drivers/connector/cn_proc.c: remove unused local
    Documentation/SubmitChecklist: add RCU debug config options
    reiserfs: use hweight_long()
    reiserfs: use proper little-endian bitops
    pnpacpi: register disabled resources
    drivers/rtc/rtc-tegra.c: properly initialize spinlock
    drivers/rtc/rtc-twl.c: check return value of twl_rtc_write_u8() in twl_rtc_set_time()
    drivers/rtc: add support for Qualcomm PMIC8xxx RTC
    drivers/rtc/rtc-s3c.c: support clock gating
    drivers/rtc/rtc-mpc5121.c: add support for RTC on MPC5200
    init: skip calibration delay if previously done
    misc/eeprom: add eeprom access driver for digsy_mtc board
    misc/eeprom: add driver for microwire 93xx46 EEPROMs
    checkpatch.pl: update $logFunctions
    checkpatch: make utf-8 test --strict
    checkpatch.pl: add ability to ignore various messages
    checkpatch: add a "prefer __aligned" check
    checkpatch: validate signature styles and To: and Cc: lines
    checkpatch: add __rcu as a sparse modifier
    checkpatch: suggest using min_t or max_t
    ...

    Did this as a merge because of (trivial) conflicts in
    - Documentation/feature-removal-schedule.txt
    - arch/xtensa/include/asm/uaccess.h
    that were just easier to fix up in the merge than in the patch series.

    Linus Torvalds
     
  • It is not necessary to share the same notifier.h.

    This patch already moves register_reboot_notifier() and
    unregister_reboot_notifier() from kernel/notifier.c to kernel/sys.c.

    [amwang@redhat.com: make allyesconfig succeed on ppc64]
    Signed-off-by: WANG Cong
    Cc: David Miller
    Cc: "Rafael J. Wysocki"
    Cc: Greg KH
    Signed-off-by: WANG Cong
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Amerigo Wang
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (43 commits)
    fs: Merge split strings
    treewide: fix potentially dangerous trailing ';' in #defined values/expressions
    uwb: Fix misspelling of neighbourhood in comment
    net, netfilter: Remove redundant goto in ebt_ulog_packet
    trivial: don't touch files that are removed in the staging tree
    lib/vsprintf: replace link to Draft by final RFC number
    doc: Kconfig: `to be' -> `be'
    doc: Kconfig: Typo: square -> squared
    doc: Konfig: Documentation/power/{pm => apm-acpi}.txt
    drivers/net: static should be at beginning of declaration
    drivers/media: static should be at beginning of declaration
    drivers/i2c: static should be at beginning of declaration
    XTENSA: static should be at beginning of declaration
    SH: static should be at beginning of declaration
    MIPS: static should be at beginning of declaration
    ARM: static should be at beginning of declaration
    rcu: treewide: Do not use rcu_read_lock_held when calling rcu_dereference_check
    Update my e-mail address
    PCIe ASPM: forcedly -> forcibly
    gma500: push through device driver tree
    ...

    Fix up trivial conflicts:
    - arch/arm/mach-ep93xx/dma-m2p.c (deleted)
    - drivers/gpio/gpio-ep93xx.c (renamed and context nearby)
    - drivers/net/r8169.c (just context changes)

    Linus Torvalds
     

25 Jul, 2011

2 commits

  • * git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus:
    modpost: Fix modpost's license checking V3
    module: add /sys/module//uevent files
    module: change attr callbacks to take struct module_kobject
    modules: make arch's use default loader hooks
    modules: add default loader hook implementations
    param: fix return value handling in param_set_*

    Linus Torvalds
     
  • * 'kvm-updates/3.1' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (143 commits)
    KVM: IOMMU: Disable device assignment without interrupt remapping
    KVM: MMU: trace mmio page fault
    KVM: MMU: mmio page fault support
    KVM: MMU: reorganize struct kvm_shadow_walk_iterator
    KVM: MMU: lockless walking shadow page table
    KVM: MMU: do not need atomicly to set/clear spte
    KVM: MMU: introduce the rules to modify shadow page table
    KVM: MMU: abstract some functions to handle fault pfn
    KVM: MMU: filter out the mmio pfn from the fault pfn
    KVM: MMU: remove bypass_guest_pf
    KVM: MMU: split kvm_mmu_free_page
    KVM: MMU: count used shadow pages on prepareing path
    KVM: MMU: rename 'pt_write' to 'emulate'
    KVM: MMU: cleanup for FNAME(fetch)
    KVM: MMU: optimize to handle dirty bit
    KVM: MMU: cache mmio info on page fault path
    KVM: x86: introduce vcpu_mmio_gva_to_gpa to cleanup the code
    KVM: MMU: do not update slot bitmap if spte is nonpresent
    KVM: MMU: fix walking shadow page table
    KVM guest: KVM Steal time registration
    ...

    Linus Torvalds
     

24 Jul, 2011

1 commit

  • This patch removes all the module loader hook implementations in the
    architecture specific code where the functionality is the same as that
    now provided by the recently added default hooks.

    Signed-off-by: Jonas Bonn
    Acked-by: Mike Frysinger
    Acked-by: Geert Uytterhoeven
    Tested-by: Michal Simek
    Signed-off-by: Rusty Russell

    Jonas Bonn