1. 14 8月, 2013 10 次提交
  2. 08 8月, 2013 2 次提交
  3. 01 8月, 2013 1 次提交
  4. 31 7月, 2013 2 次提交
  5. 24 7月, 2013 12 次提交
    • G
      powerpc/eeh: Introdce flag to protect sysfs · ab55d218
      Gavin Shan 提交于
      The patch introduces flag EEH_DEV_SYSFS to keep track that the sysfs
      entries for the corresponding EEH device (then PCI device) has been
      added or removed, in order to avoid race condition.
      Signed-off-by: NGavin Shan <shangw@linux.vnet.ibm.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      ab55d218
    • G
      powerpc/eeh: Fix unbalanced enable for IRQ · 91150af3
      Gavin Shan 提交于
      The patch fixes following issue:
      
      Unbalanced enable for IRQ 23
      ------------[ cut here ]------------
      WARNING: at kernel/irq/manage.c:437
      :
      NIP [c00000000016de8c] .__enable_irq+0x11c/0x140
      LR [c00000000016de88] .__enable_irq+0x118/0x140
      Call Trace:
      [c000003ea1f23880] [c00000000016de88] .__enable_irq+0x118/0x140 (unreliable)
      [c000003ea1f23910] [c00000000016df08] .enable_irq+0x58/0xa0
      [c000003ea1f239a0] [c0000000000388b4] .eeh_enable_irq+0xc4/0xe0
      [c000003ea1f23a30] [c000000000038a28] .eeh_report_reset+0x78/0x130
      [c000003ea1f23ac0] [c000000000037508] .eeh_pe_dev_traverse+0x98/0x170
      [c000003ea1f23b60] [c0000000000391ac] .eeh_handle_normal_event+0x2fc/0x3d0
      [c000003ea1f23bf0] [c000000000039538] .eeh_handle_event+0x2b8/0x2c0
      [c000003ea1f23c90] [c000000000039600] .eeh_event_handler+0xc0/0x170
      [c000003ea1f23d30] [c0000000000da9a0] .kthread+0xf0/0x100
      [c000003ea1f23e30] [c00000000000a1dc] .ret_from_kernel_thread+0x5c/0x80
      Signed-off-by: NGavin Shan <shangw@linux.vnet.ibm.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      91150af3
    • G
      powerpc/eeh: Don't use pci_dev during BAR restore · 4b83bd45
      Gavin Shan 提交于
      While restoring BARs for one specific PCI device, the pci_dev
      instance should have been released. So it's not reliable to use
      the pci_dev instance on restoring BARs. However, we still need
      some information (e.g. PCIe capability position, header type) from
      the pci_dev instance. So we have to store those information to
      EEH device in advance.
      Signed-off-by: NGavin Shan <shangw@linux.vnet.ibm.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      4b83bd45
    • G
      powerpc/eeh: Use partial hotplug for EEH unaware drivers · f5c57710
      Gavin Shan 提交于
      When EEH error happens to one specific PE, some devices with drivers
      supporting EEH won't except hotplug on the device. However, there
      might have other deivces without driver, or with driver without EEH
      support. For the case, we need do partial hotplug in order to make
      sure that the PE becomes absolutely quite during reset. Otherise,
      the PE reset might fail and leads to failure of error recovery.
      
      The current code doesn't handle that 'mixed' case properly, it either
      uses the error callbacks to the drivers, or tries hotplug, but doesn't
      handle a PE (EEH domain) composed of a combination of the two.
      
      The patch intends to support so-called "partial" hotplug for EEH:
      Before we do reset, we stop and remove those PCI devices without
      EEH sensitive driver. The corresponding EEH devices are not detached
      from its PE, but with special flag. After the reset is done, those
      EEH devices with the special flag will be scanned one by one.
      Signed-off-by: NGavin Shan <shangw@linux.vnet.ibm.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      f5c57710
    • G
      powerpc/pci: Partial tree hotplug support · ab444ec9
      Gavin Shan 提交于
      When EEH error happens to one specific PE, the device drivers
      of its attached EEH devices (PCI devices) are checked to see
      the further action: reset with complete hotplug, or reset without
      hotplug. However, that's not enough for those PCI devices whose
      drivers can't support EEH, or those PCI devices without driver.
      So we need do so-called "partial hotplug" on basis of PCI devices.
      In the situation, part of PCI devices of the specific PE are
      unplugged and plugged again after PE reset.
      
      The patch changes pcibios_add_pci_devices() so that it can support
      full hotplug and so-called "partial" hotplug based on device-tree
      or real hardware. It's notable that pci_of_scan.c has been changed
      for a bit in order to support the "partial" hotplug based on dev-tree.
      
      Most of the generic code already supports that, we just need to
      plumb it properly on our side.
      Signed-off-by: NGavin Shan <shangw@linux.vnet.ibm.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      ab444ec9
    • G
      powerpc/eeh: Use safe list traversal when walking EEH devices · 9feed42e
      Gavin Shan 提交于
      Currently, we're trasversing the EEH devices list using list_for_each_entry().
      That's not safe enough because the EEH devices might be removed from
      its parent PE while doing iteration. The patch replaces that with
      list_for_each_entry_safe().
      Signed-off-by: NGavin Shan <shangw@linux.vnet.ibm.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      9feed42e
    • G
      powerpc/eeh: Keep PE during hotplug · 807a827d
      Gavin Shan 提交于
      When we do normal hotplug, the PE (shadow EEH structure) shouldn't be
      kept around.
      
      However, we need to keep it if the hotplug an artifial one caused by
      EEH errors recovery.
      
      Since we remove EEH device through the PCI hook pcibios_release_device(),
      the flag "purge_pe" passed to various functions is meaningless. So the patch
      removes the meaningless flag and introduce new flag "EEH_PE_KEEP"
      to save the PE while doing hotplug during EEH error recovery.
      Signed-off-by: NGavin Shan <shangw@linux.vnet.ibm.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      807a827d
    • G
      powerpc/pci: Override pcibios_release_device() · 008a4938
      Gavin Shan 提交于
      The patch overrides pcibios_release_device() to release EEH
      resources (EEH cache, unbinding EEH device) for the indicated PCI
      device.
      Signed-off-by: NGavin Shan <shangw@linux.vnet.ibm.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      008a4938
    • G
      powerpc/eeh: Export functions for hotplug · f2856491
      Gavin Shan 提交于
      Make some functions public in order to support hotplug on either specific
      PCI bus or PCI device in future.
      Signed-off-by: NGavin Shan <shangw@linux.vnet.ibm.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      f2856491
    • G
      powerpc/eeh: Remove reference to PCI device · 0ba17888
      Gavin Shan 提交于
      We will rely on pcibios_release_device() to remove the EEH cache
      and unbind EEH device for the specific PCI device. So we shouldn't
      hold the reference to the PCI device from EEH cache and EEH device.
      Otherwise, pcibios_release_device() won't be called as we expected.
      The patch removes the reference to the PCI device in EEH core.
      Signed-off-by: NGavin Shan <shangw@linux.vnet.ibm.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      0ba17888
    • A
      powerpc/modules: Module CRC relocation fix causes perf issues · 0e0ed640
      Anton Blanchard 提交于
      Module CRCs are implemented as absolute symbols that get resolved by
      a linker script. We build an intermediate .o that contains an
      unresolved symbol for each CRC. genksysms parses this .o, calculates
      the CRCs and writes a linker script that "resolves" the symbols to
      the calculated CRC.
      
      Unfortunately the ppc64 relocatable kernel sees these CRCs as symbols
      that need relocating and relocates them at boot. Commit d4703aef
      (module: handle ppc64 relocating kcrctabs when CONFIG_RELOCATABLE=y)
      added a hook to reverse the bogus relocations. Part of this patch
      created a symbol at 0x0:
      
      # head -2 /proc/kallsyms
      0000000000000000 T reloc_start
      c000000000000000 T .__start
      
      This reloc_start symbol is causing lots of confusion to perf. It
      thinks reloc_start is a massive function that stretches from 0x0 to
      0xc000000000000000 and we get various cryptic errors out of perf,
      including:
      
      problem incrementing symbol count, skipping event
      
      This patch removes the  reloc_start linker script label and instead
      defines it as PHYSICAL_START. We also need to wrap it with
      CONFIG_PPC64 because the ppc32 kernel can set a non zero
      PHYSICAL_START at compile time and we wouldn't want to subtract
      it from the CRCs in that case.
      Signed-off-by: NAnton Blanchard <anton@samba.org>
      Cc: <stable@kernel.org>
      Acked-by: NRusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      0e0ed640
    • M
      powerpc: Add second POWER8 PVR entry · 33959f88
      Michael Neuling 提交于
      POWER8 comes with two different PVRs.  This patch enables the additional
      PVR in the cputable.
      
      The existing entry (PVR=0x4b) is renamed to POWER8E and the new entry
      (PVR=0x4d) is given POWER8.
      Signed-off-by: NMichael Neuling <mikey@neuling.org>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      33959f88
  6. 10 7月, 2013 1 次提交
  7. 04 7月, 2013 3 次提交
    • Z
      powerpc: Remove savemaxmem parameter setup · 427fcd23
      Zhang Yanfei 提交于
      saved_max_pfn is used to know the amount of memory that the previous
      kernel used.  And for powerpc, we set saved_max_pfn by passing the kernel
      commandline parameter "savemaxmem=".
      
      The only user of saved_max_pfn in powerpc is read_oldmem interface.  Since
      we have removed read_oldmem, we don't need this parameter anymore.
      Signed-off-by: NZhang Yanfei <zhangyanfei@cn.fujitsu.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: "Eric W. Biederman" <ebiederm@xmission.com>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Dave Hansen <dave@sr71.net>
      Cc: Fenghua Yu <fenghua.yu@intel.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Matt Fleming <matt.fleming@intel.com>
      Cc: Michael Holzheu <holzheu@linux.vnet.ibm.com>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: Vivek Goyal <vgoyal@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      427fcd23
    • J
      mm: enhance free_reserved_area() to support poisoning memory with zero · dbe67df4
      Jiang Liu 提交于
      Address more review comments from last round of code review.
      1) Enhance free_reserved_area() to support poisoning freed memory with
         pattern '0'. This could be used to get rid of poison_init_mem()
         on ARM64.
      2) A previous patch has disabled memory poison for initmem on s390
         by mistake, so restore to the original behavior.
      3) Remove redundant PAGE_ALIGN() when calling free_reserved_area().
      Signed-off-by: NJiang Liu <jiang.liu@huawei.com>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: "Michael S. Tsirkin" <mst@redhat.com>
      Cc: <sworddragon2@aol.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Chris Metcalf <cmetcalf@tilera.com>
      Cc: David Howells <dhowells@redhat.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jeremy Fitzhardinge <jeremy@goop.org>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Cc: Joonsoo Kim <js1304@gmail.com>
      Cc: Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Cc: Marek Szyprowski <m.szyprowski@samsung.com>
      Cc: Mel Gorman <mel@csn.ul.ie>
      Cc: Michel Lespinasse <walken@google.com>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: Rik van Riel <riel@redhat.com>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Tang Chen <tangchen@cn.fujitsu.com>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Wen Congyang <wency@cn.fujitsu.com>
      Cc: Will Deacon <will.deacon@arm.com>
      Cc: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: Russell King <rmk@arm.linux.org.uk>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      dbe67df4
    • J
      mm: change signature of free_reserved_area() to fix building warnings · 11199692
      Jiang Liu 提交于
      Change signature of free_reserved_area() according to Russell King's
      suggestion to fix following build warnings:
      
        arch/arm/mm/init.c: In function 'mem_init':
        arch/arm/mm/init.c:603:2: warning: passing argument 1 of 'free_reserved_area' makes integer from pointer without a cast [enabled by default]
          free_reserved_area(__va(PHYS_PFN_OFFSET), swapper_pg_dir, 0, NULL);
          ^
        In file included from include/linux/mman.h:4:0,
                         from arch/arm/mm/init.c:15:
        include/linux/mm.h:1301:22: note: expected 'long unsigned int' but argument is of type 'void *'
         extern unsigned long free_reserved_area(unsigned long start, unsigned long end,
      
         mm/page_alloc.c: In function 'free_reserved_area':
      >> mm/page_alloc.c:5134:3: warning: passing argument 1 of 'virt_to_phys' makes pointer from integer without a cast [enabled by default]
         In file included from arch/mips/include/asm/page.h:49:0,
                          from include/linux/mmzone.h:20,
                          from include/linux/gfp.h:4,
                          from include/linux/mm.h:8,
                          from mm/page_alloc.c:18:
         arch/mips/include/asm/io.h:119:29: note: expected 'const volatile void *' but argument is of type 'long unsigned int'
         mm/page_alloc.c: In function 'free_area_init_nodes':
         mm/page_alloc.c:5030:34: warning: array subscript is below array bounds [-Warray-bounds]
      
      Also address some minor code review comments.
      Signed-off-by: NJiang Liu <jiang.liu@huawei.com>
      Reported-by: NArnd Bergmann <arnd@arndb.de>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: "Michael S. Tsirkin" <mst@redhat.com>
      Cc: <sworddragon2@aol.com>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Chris Metcalf <cmetcalf@tilera.com>
      Cc: David Howells <dhowells@redhat.com>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jeremy Fitzhardinge <jeremy@goop.org>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Cc: Joonsoo Kim <js1304@gmail.com>
      Cc: Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Cc: Marek Szyprowski <m.szyprowski@samsung.com>
      Cc: Mel Gorman <mel@csn.ul.ie>
      Cc: Michel Lespinasse <walken@google.com>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: Rik van Riel <riel@redhat.com>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Tang Chen <tangchen@cn.fujitsu.com>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Wen Congyang <wency@cn.fujitsu.com>
      Cc: Will Deacon <will.deacon@arm.com>
      Cc: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: Russell King <rmk@arm.linux.org.uk>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      11199692
  8. 02 7月, 2013 2 次提交
  9. 01 7月, 2013 7 次提交