1. 29 6月, 2007 1 次提交
  2. 08 5月, 2007 2 次提交
  3. 07 5月, 2007 2 次提交
  4. 27 4月, 2007 1 次提交
  5. 04 12月, 2006 6 次提交
    • B
      [POWERPC] Merge 32 and 64 bits asm-powerpc/io.h · 68a64357
      Benjamin Herrenschmidt 提交于
      powerpc: Merge 32 and 64 bits asm-powerpc/io.h
      
      The rework on io.h done for the new hookable accessors made it easier,
      so I just finished the work and merged 32 and 64 bits io.h for arch/powerpc.
      
      arch/ppc still uses the old version in asm-ppc, there is just too much gunk
      in there that I really can't be bothered trying to cleanup.
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      68a64357
    • B
      [POWERPC] Allow hooking of PCI MMIO & PIO accessors on 64 bits · 4cb3cee0
      Benjamin Herrenschmidt 提交于
      This patch reworks the way iSeries hooks on PCI IO operations (both MMIO
      and PIO) and provides a generic way for other platforms to do so (we
      have need to do that for various other platforms).
      
      While reworking the IO ops, I ended up doing some spring cleaning in
      io.h and eeh.h which I might want to split into 2 or 3 patches (among
      others, eeh.h had a lot of useless stuff in it).
      
      A side effect is that EEH for PIO should work now (it used to pass IO
      ports down to the eeh address check functions which is bogus).
      
      Also, new are MMIO "repeat" ops, which other archs like ARM already had,
      and that we have too now: readsb, readsw, readsl, writesb, writesw,
      writesl.
      
      In the long run, I might also make EEH use the hooks instead
      of wrapping at the toplevel, which would make things even cleaner and
      relegate EEH completely in platforms/iseries, but we have to measure the
      performance impact there (though it's really only on MMIO reads)
      
      Since I also need to hook on ioremap, I shuffled the functions a bit
      there. I introduced ioremap_flags() to use by drivers who want to pass
      explicit flags to ioremap (and it can be hooked). The old __ioremap() is
      still there as a low level and cannot be hooked, thus drivers who use it
      should migrate unless they know they want the low level version.
      
      The patch "arch provides generic iomap missing accessors" (should be
      number 4 in this series) is a pre-requisite to provide full iomap
      API support with this patch.
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      4cb3cee0
    • B
      [POWERPC] Generic OF platform driver for PCI host bridges. · 4c9d2800
      Benjamin Herrenschmidt 提交于
      When enabled in Kconfig, it will pick up any of_platform_device
      matching it's match list (currently type "pci", "pcix", "pcie",
      or "ht" and setup a PHB for it.
      
      Platform must provide a ppc_md.pci_setup_phb() for it to work
      (for doing the necessary initialisations specific to a given PHB
      like setting up the config space ops).
      
      It's currently only available on 64 bits as the 32 bits PCI code
      can't quite cope with it in it's current form. I will fix that
      later.
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      4c9d2800
    • B
      [POWERPC] Refactor 64 bits DMA operations · 12d04eef
      Benjamin Herrenschmidt 提交于
      This patch completely refactors DMA operations for 64 bits powerpc. 32 bits
      is untouched for now.
      
      We use the new dev_archdata structure to add the dma operations pointer
      and associated data to struct device. While at it, we also add the OF node
      pointer and numa node. In the future, we might want to look into merging
      that with pci_dn as well.
      
      The old vio, pci-iommu and pci-direct DMA ops are gone. They are now replaced
      by a set of generic iommu and direct DMA ops (non PCI specific) that can be
      used by bus types. The toplevel implementation is now inline.
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      12d04eef
    • B
      [POWERPC] Remove ppc_md.pci_map_irq & ppc_swizzle for ARCH=powerpc · 69108cf0
      Benjamin Herrenschmidt 提交于
      These were inherited from ARCH=ppc, but are not needed since parsing of interrupts
      should be done via the of_* functions (who can do swizzling). If we ever need to
      do non-standard swizzling on bridges without a device-node, then we might add
      back a slightly different version of ppc_md.pci_swizzle but for now, that is not
      the case.
      
      I removed the couple of calls for these in 83xx. If that breaks something, then
      there is a problem with the device-tree on these.
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      69108cf0
    • B
      [POWERPC] Make pci_read_irq_line the default · f90bb153
      Benjamin Herrenschmidt 提交于
      This patch reworks the way IRQs are fixed up on PCI for arch powerpc.
      
      It makes pci_read_irq_line() called by default in the PCI code for
      devices that are probed, and add an optional per-device fixup in
      ppc_md for platforms that really need to correct what they obtain
      from pci_read_irq_line().
      
      It also removes ppc_md.irq_bus_setup which was only used by pSeries
      and should not be needed anymore.
      
      I've also removed the pSeries s7a workaround as it can't work with
      the current interrupt code anyway. I'm trying to get one of these
      machines working so I can test a proper fix for that problem.
      
      I also haven't updated the old-style fixup code from 85xx_cds.c
      because it's actually buggy :) It assigns pci_dev->irq hard coded
      numbers which is no good with the new IRQ mapping code. It should
      at least use irq_create_mapping(NULL, hard_coded_number); and possibly
      also set_irq_type() to set them as level low.
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      f90bb153
  6. 07 10月, 2006 1 次提交
  7. 03 7月, 2006 1 次提交
    • B
      [POWERPC] Add new interrupt mapping core and change platforms to use it · 0ebfff14
      Benjamin Herrenschmidt 提交于
      This adds the new irq remapper core and removes the old one.  Because
      there are some fundamental conflicts with the old code, like the value
      of NO_IRQ which I'm now setting to 0 (as per discussions with Linus),
      etc..., this commit also changes the relevant platform and driver code
      over to use the new remapper (so as not to cause difficulties later
      in bisecting).
      
      This patch removes the old pre-parsing of the open firmware interrupt
      tree along with all the bogus assumptions it made to try to renumber
      interrupts according to the platform. This is all to be handled by the
      new code now.
      
      For the pSeries XICS interrupt controller, a single remapper host is
      created for the whole machine regardless of how many interrupt
      presentation and source controllers are found, and it's set to match
      any device node that isn't a 8259.  That works fine on pSeries and
      avoids having to deal with some of the complexities of split source
      controllers vs. presentation controllers in the pSeries device trees.
      
      The powerpc i8259 PIC driver now always requests the legacy interrupt
      range. It also has the feature of being able to match any device node
      (including NULL) if passed no device node as an input. That will help
      porting over platforms with broken device-trees like Pegasos who don't
      have a proper interrupt tree.
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      0ebfff14
  8. 28 6月, 2006 1 次提交
    • H
      [POWERPC] kdump: Reserve the existing TCE mappings left by the first kernel · 5f50867b
      Haren Myneni 提交于
      During kdump boot, noticed some machines checkstop on dma protection
      fault for ongoing DMA left in the first kernel. Instead of initializing
      TCE entries in iommu_init() for the kdump boot, this patch fixes this
      issue by walking through the each TCE table and checks whether the
      entries are in use by the first kernel. If so, reserve those entries by
      setting the corresponding bit in tbl->it_map such that these entries
      will not be available for the kdump boot.
      
      However it could be possible that all TCE entries might be used up due
      to the driver bug that does continuous mapping. My observation is around
      1700 TCE  entries are used on some systems (Ex: P4) at some point of
      time during kdump boot and saving dump (either write into the disk or
      sending to remote machine). Hence, this patch will make sure that
      minimum of 2048 entries will be available such that kdump boot could be
      successful in some cases.
      Signed-off-by: NHaren Myneni <haren@us.ibm.com>
      Acked-by: NOlof Johansson <olof@lixom.net>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      5f50867b
  9. 15 6月, 2006 1 次提交
    • J
      [POWERPC] MSI abstraction · 204face4
      Jake Moilanen 提交于
      Instead of trying to make PPC64 MSI fit in a Intel-centric MSI layer, a
      simple short-term solution is to hook the pci_{en/dis}able_msi() calls
      and make a machdep call.
      
      The rest of the MSI functions are superfluous for what is needed at this
      time.  Many of which can have machdep calls added as needed.
      
      Ben and Michael Ellerman are looking into rewrite the MSI layer to be
      more generic.  However, in the meantime this works as a interim
      solution.
      Signed-off-by: NJake Moilanen <moilanen@austin.ibm.com>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      204face4
  10. 26 4月, 2006 1 次提交
  11. 23 4月, 2006 1 次提交
  12. 28 3月, 2006 1 次提交
  13. 27 3月, 2006 2 次提交
    • P
      powerpc: Fix event-scan code for 32-bit CHRP · 9618edab
      Paul Mackerras 提交于
      On CHRP machines we are supposed to call into firmware (RTAS)
      periodically, to give it a chance to check for errors and other
      events.  Under ppc we had some special code in timer_interrupt
      to do this, but that didn't get transferred over to arch/powerpc.
      Instead, we use an array of timer_list structs, one per CPU,
      and use add_timer_on to make sure each one gets called on the
      appropriate CPU.
      
      With this we can remove the heartbeat_* elements of the ppc_md
      struct.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      9618edab
    • P
      powerpc: Unify the 32 and 64 bit idle loops · a0652fc9
      Paul Mackerras 提交于
      This unifies the 32-bit (ARCH=ppc and ARCH=powerpc) and 64-bit idle
      loops.  It brings over the concept of having a ppc_md.power_save
      function from 32-bit to ARCH=powerpc, which lets us get rid of
      native_idle().  With this we will also be able to simplify the idle
      handling for pSeries and cell.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      a0652fc9
  14. 09 1月, 2006 3 次提交
    • A
      [PATCH] cell: enable pause(0) in cpu_idle · c902be71
      Arnd Bergmann 提交于
      This patch enables support for pause(0) power management state
      for the Cell Broadband Processor, which is import for power efficient
      operation. The pervasive infrastructure will in the future enable
      us to introduce more functionality specific to the Cell's
      pervasive unit.
      
      From: Maximino Aguilar <maguilar@us.ibm.com>
      Signed-off-by: NArnd Bergmann <arndb@de.ibm.com>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      c902be71
    • M
      [PATCH] powerpc: Propagate regs through to machine_crash_shutdown · cd0ca2ce
      Michael Ellerman 提交于
      Currently machine_crash_shutdown() gets a struct pt_regs, but doesn't pass it
      through to the ppc_md function, it should.
      Signed-off-by: NMichael Ellerman <michael@ellerman.id.au>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      cd0ca2ce
    • M
      [PATCH] powerpc: Merge kexec · 3d1229d6
      Michael Ellerman 提交于
      This patch merges, to some extent, the PPC32 and PPC64 kexec implementations.
      
      We adopt the PPC32 approach of having ppc_md callbacks for the kexec functions.
      The current PPC64 implementation becomes the "default" implementation for PPC64
      which platforms can select if they need no special treatment.
      
      I've added these default callbacks to pseries/maple/cell/powermac, this means
      iSeries no longer supports kexec - but it never worked anyway.
      
      I've renamed PPC32's machine_kexec_simple to default_machine_kexec, inline with
      PPC64. Judging by the comments it might be better named machine_kexec_non_of,
      or something, but at the moment it's the only implementation for PPC32 so it's
      the "default".
      
      Kexec requires machine_shutdown(), which is in machine_kexec.c on PPC32, but we
      already have in setup-common.c on powerpc. All this does is call
      ppc_md.nvram_sync, which only powermac implements, so instead make
      machine_shutdown a ppc_md member and have it call core99_nvram_sync directly
      on powermac.
      
      I've also stuck relocate_kernel.S into misc_32.S for powerpc.
      
      Built for ARCH=ppc, and 32 & 64 bit ARCH=powerpc, with KEXEC=y/n. Booted on
      P5 LPAR and successfully kexec'ed.
      
      Should apply on top of 493f25ef.
      Signed-off-by: NMichael Ellerman <michael@ellerman.id.au>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      3d1229d6
  15. 14 11月, 2005 1 次提交
    • M
      [PATCH] powerpc: Turn cpu_irq_down into kexec_cpu_down · c5e24354
      Michael Ellerman 提交于
      We currently have a ppc_md member called cpu_irq_down, which disables IRQs
      for the cpu in question. The only caller of cpu_irq_down is the kexec code.
      
      On pSeries we need to do more than just teardown IRQs at kexec time, so rename
      the ppc_md member to kexec_cpu_down and expand it. The pSeries code needs to
      know, and other platforms might too, whether we're doing a crash shutdown (ie.
      panicking) or a regular kexec, so add a flag for that.
      
      The pSeries implementation of kexec_cpu_down does an unregister VPA call, which
      tells the Hypervisor to stop writing stuff into our pacas. Without this we can
      get weird memory corruption bugs when we kexec, caused by the Hypervisor
      writing into the first kernel's pacas which happens to be somewhere interesting
      in the second kernel's memory.
      Signed-off-by: NMichael Ellerman <michael@ellerman.id.au>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      c5e24354
  16. 07 11月, 2005 2 次提交
  17. 03 11月, 2005 1 次提交
  18. 29 10月, 2005 1 次提交
    • R
      [PATCH] ppc: make phys_mem_access_prot() work with pfns instead of addresses · 8b150478
      Roland Dreier 提交于
      Change the phys_mem_access_prot() function to take a pfn instead of an
      address.  This allows mmap64() to work on /dev/mem for addresses above 4G
      on 32-bit architectures.  We start with a pfn in mmap_mem(), so there's no
      need to convert to an address; in fact, it's actively bad, since the
      conversion can overflow when the address is above 4G.
      
      Similarly fix the ppc32 page_is_ram() function to avoid a conversion to an
      address by directly comparing to max_pfn.  Working with max_pfn instead of
      high_memory fixes page_is_ram() to give the right answer for highmem pages.
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      Cc: Anton Blanchard <anton@samba.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      8b150478
  19. 26 10月, 2005 1 次提交
  20. 22 10月, 2005 1 次提交
    • P
      powerpc: Merge in 64-bit powermac support. · 35499c01
      Paul Mackerras 提交于
      This brings in a lot of changes from arch/ppc64/kernel/pmac_*.c to
      arch/powerpc/platforms/powermac/*.c and makes various minor tweaks
      elsewhere.  On the powermac we now initialize ppc_md by copying
      the whole pmac_md structure into it, which required some changes in
      the ordering of initializations of individual fields of it.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      35499c01
  21. 20 10月, 2005 1 次提交
  22. 19 10月, 2005 1 次提交
    • P
      powerpc: Merge machdep.h · 143a1dec
      Paul Mackerras 提交于
      A few things change for consistency between ppc32 and ppc64:
      idle functions return void; *_get_boot_time functions return
      unsigned long (i.e. time_t) rather than filling in a struct rtc_time
      (since that's useful to the callers and easier for pmac to
      generate); *_get_rtc_time and *_set_rtc_time functions take
      a struct rtc_time; irq_canonicalize is gone; nvram_sync returns
      void.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      143a1dec
  23. 21 9月, 2005 1 次提交
  24. 12 9月, 2005 2 次提交
    • A
      [PATCH] ppc64: Remove unused code · 2d909d08
      Anton Blanchard 提交于
      ppc64_attention_msg and ppc64_dump_msg are not used so remove them.
      Signed-off-by: NAnton Blanchard <anton@samba.org>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      2d909d08
    • P
      ppc64: Set up PCI tree from Open Firmware device tree · 4267292b
      Paul Mackerras 提交于
      This adds code which gives us the option on ppc64 of instantiating the
      PCI tree (the tree of pci_bus and pci_dev structs) from the Open
      Firmware device tree rather than by probing PCI configuration space.
      The OF device tree has a node for each PCI device and bridge in the
      system, with properties that tell us what addresses the firmware has
      configured for them and other details.
      
      There are a couple of reasons why this is needed.  First, on systems
      with a hypervisor, there is a PCI-PCI bridge per slot under the PCI
      host bridges.  These PCI-PCI bridges have special isolation features
      for virtualization.  We can't write to their config space, and we are
      not supposed to be reading their config space either.  The firmware
      tells us about the address ranges that they pass in the OF device
      tree.
      
      Secondly, on powermacs, the interrupt controller is in a PCI device
      that may be behind a PCI-PCI bridge.  If we happened to take an
      interrupt just at the point when the device or a bridge on the path to
      it was disabled for probing, we would crash when we try to access the
      interrupt controller.
      
      I have implemented a platform-specific function which is called for
      each PCI bridge (host or PCI-PCI) to say whether the code should look
      in the device tree or use normal PCI probing for the devices under
      that bridge.  On pSeries machines we use the device tree if we're
      running under a hypervisor, otherwise we use normal probing.  On
      powermacs we use normal probing for the AGP bridge, since the device
      for the AGP bridge itself isn't shown in the device tree (at least on
      my G5), and the device tree for everything else.
      
      This has been tested on a dual G5 powermac, a partition on a POWER5
      machine (running under the hypervisor), and a legacy iSeries
      partition.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      4267292b
  25. 06 9月, 2005 1 次提交
  26. 29 8月, 2005 1 次提交
  27. 05 8月, 2005 1 次提交
  28. 14 7月, 2005 1 次提交