1. 14 10月, 2007 1 次提交
  2. 12 9月, 2007 1 次提交
  3. 31 8月, 2007 1 次提交
    • D
      [SPARC64]: Fix several bugs in MSI handling. · 5f92c329
      David S. Miller 提交于
      1) sun4{u,v}_build_msi() have improper return value handling.
      
         We should always return negative error codes, instead of
         using the magic value "0" which could in fact be a valid
         MSI number.
      
      2) sun4{u,v}_build_msi() should return -ENOMEM instead of
         calling prom_prom() halt with kzalloc() of the interrupt
         data fails.
      
      3) We 'remembered' the MSI number using a singleton in the
         struct device archdata area, this doesn't work for MSI-X
         which can cause multiple MSIs assosciated with one device.
      
         Delete that archdata member, and instead store the MSI
         number in the IRQ chip data area.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5f92c329
  4. 30 7月, 2007 2 次提交
    • D
      [SPARC64]: Fix conflicts in SBUS/PCI/EBUS/ISA DMA handling. · ad7ad57c
      David S. Miller 提交于
      Fully unify all of the DMA ops so that subordinate bus types to
      the DMA operation providers (such as ebus, isa, of_device) can
      work transparently.
      
      Basically, we just make sure that for every system device we
      create, the dev->archdata 'iommu' and 'stc' fields are filled
      in.
      
      Then we have two platform variants of the DMA ops, one for SUN4U which
      actually programs the real hardware, and one for SUN4V which makes
      hypervisor calls.
      
      This also fixes the crashes in parport_pc on sparc64, reported by
      Meelis Roos.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ad7ad57c
    • D
      [SPARC64]: Fix sun4u PCI config space accesses on sun4u. · a2d6ea01
      David S. Miller 提交于
      Don't provide fake PCI config space for sun4u.
      
      Also, put back the funny host controller space handling that
      at least Sabre needs.  You have to read PCI host controller
      registers at their nature size otherwise you get zeros instead
      of correct values.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a2d6ea01
  5. 12 7月, 2007 1 次提交
  6. 08 6月, 2007 1 次提交
    • D
      [SPARC64]: Handle PCI bridges without 'ranges' property. · 8c2786cf
      David S. Miller 提交于
      This fixes the IDE controller not showing up on Netra-T1
      systems.
      
      Just like Simba bridges, some PCI bridges can lack the
      'ranges' OBP property.  So we handle this similarly to
      the existing Simba code:
      
      1) In of_device register address resolving, we push the
         translation to the parent.
      
      2) In PCI device scanning, we interrogate the PCI config
         space registers of the PCI bus device in order to resolve
         the resources, just like the generic Linux PCI probing
         code does.
      
      With much help and testing from Fabio, who also reported
      the initial problem.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NFabio Massimo Di Nitto <fabbione@ubuntu.com>
      8c2786cf
  7. 29 5月, 2007 1 次提交
  8. 12 5月, 2007 1 次提交
  9. 10 5月, 2007 1 次提交
  10. 09 5月, 2007 7 次提交
  11. 07 5月, 2007 2 次提交
    • D
      [SPARC64]: Fix section mismatch warnings in arch/sparc64/kernel/pci.c · a6009dda
      David S. Miller 提交于
      apb_calc_first_last(), apb_fake_ranges(), pci_of_scan_bus(),
      of_scan_pci_bridge(), pci_of_scan_bus(), and pci_scan_one_pbm()
      should all be __devinit.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a6009dda
    • D
      [SPARC64]: SUN4U PCI-E controller support. · 861fe906
      David S. Miller 提交于
      Some minor refactoring in the generic code was necessary for
      this:
      
      1) This controller requires 8-byte access to the interrupt map
         and clear register.  They are 64-bits on all the other
         SBUS and PCI controllers anyways, so this was easy to cure.
      
      2) The IMAP register has a different layout and some bits that we
         need to preserve, so use a read/modify/write when making
         changes to the IMAP register in generic code.
      
      3) Flushing the entire IOMMU TLB is best done with a single write
         to a register on this PCI controller, add a iommu->iommu_flushinv
         for this.
      
      Still lacks MSI support, that will come later.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      861fe906
  12. 03 5月, 2007 1 次提交
    • M
      MSI: arch must connect the irq and the msi_desc · 7fe3730d
      Michael Ellerman 提交于
      set_irq_msi() currently connects an irq_desc to an msi_desc. The archs call
      it at some point in their setup routine, and then the generic code sets up the
      reverse mapping from the msi_desc back to the irq.
      
      set_irq_msi() should do both connections, making it the one and only call
      required to connect an irq with it's MSI desc and vice versa.
      
      The arch code MUST call set_irq_msi(), and it must do so only once it's sure
      it's not going to fail the irq allocation.
      
      Given that there's no need for the arch to return the irq anymore, the return
      value from the arch setup routine just becomes 0 for success and anything else
      for failure.
      Signed-off-by: NMichael Ellerman <michael@ellerman.id.au>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      7fe3730d
  13. 26 4月, 2007 10 次提交
  14. 13 4月, 2007 1 次提交
  15. 03 3月, 2007 1 次提交
  16. 27 2月, 2007 1 次提交
  17. 11 2月, 2007 1 次提交
    • D
      [SPARC64]: Add PCI MSI support on Niagara. · 35a17eb6
      David S. Miller 提交于
      This is kind of hokey, we could use the hardware provided facilities
      much better.
      
      MSIs are assosciated with MSI Queues.  MSI Queues generate interrupts
      when any MSI assosciated with it is signalled.  This suggests a
      two-tiered IRQ dispatch scheme:
      
      	MSI Queue interrupt --> queue interrupt handler
      		MSI dispatch --> driver interrupt handler
      
      But we just get one-level under Linux currently.  What I'd like to do
      is possibly stick the IRQ actions into a per-MSI-Queue data structure,
      and dispatch them form there, but the generic IRQ layer doesn't
      provide a way to do that right now.
      
      So, the current kludge is to "ACK" the interrupt by processing the
      MSI Queue data structures and ACK'ing them, then we run the actual
      handler like normal.
      
      We are wasting a lot of useful information, for example the MSI data
      and address are provided with ever MSI, as well as a system tick if
      available.  If we could pass this into the IRQ handler it could help
      with certain things, in particular for PCI-Express error messages.
      
      The MSI entries on sparc64 also tell you exactly which bus/device/fn
      sent the MSI, which would be great for error handling when no
      registered IRQ handler can service the interrupt.
      
      We override the disable/enable IRQ chip methods in sun4v_msi, so we
      have to call {mask,unmask}_msi_irq() directly from there.  This is
      another ugly wart.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      35a17eb6
  18. 02 12月, 2006 1 次提交
  19. 01 7月, 2006 1 次提交
  20. 30 6月, 2006 2 次提交
  21. 28 6月, 2006 1 次提交
  22. 24 6月, 2006 1 次提交