1. 14 6月, 2013 1 次提交
    • F
      bcm63xx_enet: add support Broadcom BCM6345 Ethernet · 3dc6475c
      Florian Fainelli 提交于
      This patch adds support for the Broadcom BCM6345 SoC Ethernet. BCM6345
      has a slightly different and older DMA engine which requires the
      following modifications:
      
      - the width of the DMA channels on BCM6345 is 64 bytes vs 16 bytes,
        which means that the helpers enet_dma{c,s} need to account for this
        channel width and we can no longer use macros
      
      - BCM6345 DMA engine does not have any internal SRAM for transfering
        buffers
      
      - BCM6345 buffer allocation and flow control is not per-channel but
        global (done in RSET_ENETDMA)
      
      - the DMA engine bits are right-shifted by 3 compared to other DMA
        generations
      
      - the DMA enable/interrupt masks are a little different (we need to
        enabled more bits for 6345)
      
      - some register have the same meaning but are offsetted in the ENET_DMAC
        space so a lookup table is required to return the proper offset
      
      The MAC itself is identical and requires no modifications to work.
      Signed-off-by: NFlorian Fainelli <florian@openwrt.org>
      Acked-by: NRalf Baechle <ralf@linux-mips.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3dc6475c
  2. 11 6月, 2013 2 次提交
    • M
      bcm63xx_enet: add support for Broadcom BCM63xx integrated gigabit switch · 6f00a022
      Maxime Bizon 提交于
      Newer Broadcom BCM63xx SoCs: 6328, 6362 and 6368 have an integrated switch
      which needs to be driven slightly differently from the traditional
      external switches. This patch introduces changes in arch/mips/bcm63xx in order
      to:
      
      - register a bcm63xx_enetsw driver instead of bcm63xx_enet driver
      - update DMA channels configuration & state RAM base addresses
      - add a new platform data configuration knob to define the number of
        ports per switch/device and force link on some ports
      - define the required switch registers
      
      On the driver side, the following changes are required:
      
      - the switch ports need to be polled to ensure the link is up and
        running and RX/TX can properly work
      - basic switch configuration needs to be performed for the switch to
        forward packets to the CPU
      - update the MIB counters since the integrated
      Signed-off-by: NMaxime Bizon <mbizon@freebox.fr>
      Signed-off-by: NJonas Gorski <jogo@openwrt.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6f00a022
    • M
      bcm63xx_enet: split DMA channel register accesses · 0ae99b5f
      Maxime Bizon 提交于
      The current bcm63xx_enet driver always uses bcmenet_shared_base whenever
      it needs to access DMA channel configuration space or access the DMA
      channel state RAM. Split these register in 3 parts to be more accurate:
      
      - global DMA configuration
      - per DMA channel configuration space
      - per DMA channel state RAM space
      
      This is preliminary to support new chips where the global DMA
      configuration remains the same, but there is a varying number of DMA
      channels located at a different memory offset.
      Signed-off-by: NMaxime Bizon <mbizon@freebox.fr>
      Signed-off-by: NJonas Gorski <jogo@openwrt.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0ae99b5f
  3. 08 6月, 2013 7 次提交
  4. 06 6月, 2013 2 次提交
    • P
      arch, mm: Remove tlb_fast_mode() · 29eb7782
      Peter Zijlstra 提交于
      Since the introduction of preemptible mmu_gather TLB fast mode has been
      broken. TLB fast mode relies on there being absolutely no concurrency;
      it frees pages first and invalidates TLBs later.
      
      However now we can get concurrency and stuff goes *bang*.
      
      This patch removes all tlb_fast_mode() code; it was found the better
      option vs trying to patch the hole by entangling tlb invalidation with
      the scheduler.
      
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: Tony Luck <tony.luck@intel.com>
      Reported-by: NMax Filippov <jcmvbkbc@gmail.com>
      Signed-off-by: NPeter Zijlstra <peterz@infradead.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      29eb7782
    • M
      x86/PCI: Map PCI setup data with ioremap() so it can be in highmem · 65694c5a
      Matt Fleming 提交于
      f9a37be0 ("x86: Use PCI setup data") added support for using PCI ROM
      images from setup_data.  This used phys_to_virt(), which is not valid for
      highmem addresses, and can cause a crash when booting a 32-bit kernel via
      the EFI boot stub.
      
      pcibios_add_device() assumes that the physical addresses stored in
      setup_data are accessible via the direct kernel mapping, and that calling
      phys_to_virt() is valid.  This isn't guaranteed to be true on x86 where the
      direct mapping range is much smaller than on x86-64.
      
      Calling phys_to_virt() on a highmem address results in the following:
      
       BUG: unable to handle kernel paging request at 39a3c198
       IP: [<c262be0f>] pcibios_add_device+0x2f/0x90
       ...
       Call Trace:
        [<c2370c73>] pci_device_add+0xe3/0x130
        [<c274640b>] pci_scan_single_device+0x8b/0xb0
        [<c2370d08>] pci_scan_slot+0x48/0x100
        [<c2371904>] pci_scan_child_bus+0x24/0xc0
        [<c262a7b0>] pci_acpi_scan_root+0x2c0/0x490
        [<c23b7203>] acpi_pci_root_add+0x312/0x42f
        ...
      
      The solution is to use ioremap() instead of phys_to_virt() to map the
      setup data into the kernel address space.
      
      [bhelgaas: changelog]
      Tested-by: NJani Nikula <jani.nikula@intel.com>
      Signed-off-by: NMatt Fleming <matt.fleming@intel.com>
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      Cc: Matthew Garrett <mjg59@srcf.ucam.org>
      Cc: Seth Forshee <seth.forshee@canonical.com>
      Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
      Cc: stable@vger.kernel.org	# v3.8+
      65694c5a
  5. 05 6月, 2013 3 次提交
  6. 03 6月, 2013 14 次提交
  7. 01 6月, 2013 11 次提交