19 May, 2011

1 commit


31 Mar, 2011

1 commit


17 Dec, 2010

1 commit

  • partial_fixup is used in noreorder block.

    Separating two consecutive loads can save one cycle on processors with
    GPR intrelock and can fix load-use on processors that need a load delay slot.

    Also do so for fwd_fixup.

    [Ralf: Only R2000/R3000 class processors are lacking the the load-user
    interlock and even some of those got it retrofitted. With R2000/R3000
    being fairly uncommon these days the impact of this bug should be minor.]

    Signed-off-by: Tony Wu
    To: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/1768/
    Signed-off-by: Ralf Baechle

    Tony Wu
     

13 Apr, 2010

2 commits

  • arch/mips/lib/libgcc.h:21: ERROR: open brace '{' following union go on the same line

    Signed-off-by: Andrea Gelmini
    To: linux-kernel@vger.kernel.org
    Cc: Paul Mundt
    Cc: linux-mips@linux-mips.org
    Cc: linux-sh@vger.kernel.org
    Patchwork: http://patchwork.linux-mips.org/patch/1007/
    Signed-off-by: Ralf Baechle

    Andrea Gelmini
     
  • This may lead to warnings like:

    BUG: using smp_processor_id() in preemptible [00000000] code: reboot/1989
    caller is __udelay+0x14/0x70
    Call Trace:
    [] dump_stack+0x8/0x34
    [] debug_smp_processor_id+0xf4/0x110
    [] __udelay+0x14/0x70
    [] md_notify_reboot+0x12c/0x148
    [] notifier_call_chain+0x64/0xc8
    [] __blocking_notifier_call_chain+0x64/0xc0
    [] kernel_restart_prepare+0x1c/0x38
    [] kernel_restart+0x14/0x50
    [] SyS_reboot+0x10c/0x1f0
    [] handle_sysn32+0x44/0x84

    Signed-off-by: Ralf Baechle

    Ralf Baechle
     

17 Jun, 2009

1 commit


08 Jun, 2009

1 commit

  • Outlining fixes the issue were on certain CPUs such as the R10000 family
    the delay loop would need an extra cycle if it overlaps a cacheline
    boundary.

    The rewrite also fixes build errors with GCC 4.4 which was changed in
    way incompatible with the kernel's inline assembly.

    Relying on pure C for computation of the delay value removes the need for
    explicit. The price we pay is a slight slowdown of the computation - to
    be fixed on another day.

    Signed-off-by: Ralf Baechle

    Ralf Baechle
     

14 May, 2009

1 commit


31 Jan, 2009

1 commit


11 Jan, 2009

1 commit

  • Take all the OCTEON specific files that were added, and hook them into
    the build system for the arch/mips. For versions of GCC that lack
    OCTEON support, override gas target architecture.

    Signed-off-by: Tomaso Paoletti
    Signed-off-by: David Daney
    Signed-off-by: Ralf Baechle

    David Daney
     

28 Oct, 2008

1 commit

  • We already have sufficient infrastructure to support VR5500 and VR5500A
    series processors. Here's a Makefile support to make it selectable by
    ports, and enable it for NEC EMMA2RH Markeins board.

    This patch also fixes a confused target help, and adds 1Gb PageMask bits
    supported by VR5500 and its variants.

    Signed-off-by: Shinya Kuribayashi
    Signed-off-by: Ralf Baechle

    Shinya Kuribayashi
     

11 Oct, 2008

3 commits


21 Sep, 2008

1 commit

  • Use unsigned loads to avoid possible misscalculation of IP checksums. This
    bug was instruced in f761106cd728bcf65b7fe161b10221ee00cf7132 (lmo) /
    ed99e2bc1dc5dc54eb5a019f4975562dbef20103 (kernel.org).

    [Original fix by Atsushi. Improved instruction scheduling and fix for
    unaligned unsigned load by me -- Ralf]

    Signed-off-by: Atsushi Nemoto
    Signed-off-by: Ralf Baechle

    Atsushi Nemoto
     

29 Apr, 2008

1 commit

  • Almost all implementations of pci_iomap() in the kernel, including the generic
    lib/iomap.c one, copies the content of a struct resource into unsigned long's
    which will break on 32 bits platforms with 64 bits resources.

    This fixes all definitions of pci_iomap() to use resource_size_t. I also
    "fixed" the 64bits arch for consistency.

    Signed-off-by: Benjamin Herrenschmidt
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Benjamin Herrenschmidt
     

12 Mar, 2008

2 commits


29 Jan, 2008

4 commits

  • These symbols appear in oprofile output, stacktraces and similar but only
    make the output harder to read. Many identical symbol names such as
    "both_aligned" were also being used in multiple source files making it
    impossible to see which file actually was meant. So let's get rid of them.

    Signed-off-by: Ralf Baechle

    Ralf Baechle
     
  • IP28 needs special treatment to avoid speculative accesses. gcc
    takes care for .c code, but for assembly code we need to do it
    manually.

    This is taken from Peter Fuersts IP28 patches.

    Signed-off-by: Thomas Bogendoerfer
    Signed-off-by: Ralf Baechle

    Thomas Bogendoerfer
     
  • Since all the callers of the PHYS_TO_XKPHYS macro call with a constant,
    put the cast to LL inside the macro where it really should be rather
    than in all the callers. This makes macros like PHYS_TO_XKSEG_UNCACHED
    work without gcc whining.

    Signed-off-by: Andrew Sharp
    Signed-off-by: Ralf Baechle

    Andrew Sharp
     
  • This complements the generic R4000/R4400 errata workaround code and adds
    bits for the daddiu problem. In most places it just modifies handwritten
    assembly code so that the assembler is allowed to use a temporary register
    as daddiu may now be treated as a macro that expands to a sequence of li
    and daddu. It is the AT register or, where AT is unavailable or used
    explicitly for another purpose, an explicitly-named register is selected,
    using the .set at= feature added recently to gas. This feature is
    only used if CONFIG_CPU_DADDI_WORKAROUNDS has been set, so if the
    workaround remains disabled, the required version of binutils stays
    unchanged.

    Similarly, daddiu instructions put in branch delay slots in noreorder
    fragments are now taken out of them and the assembler is allowed to
    reorder them itself as possible (which it does making the whole idea of
    scheduling them into delay slots manually questionable).

    Also in the very few places where such a simple conversion was not
    possible, a handcoded longer sequence is implemented.

    Other than that there are changes to code responsible for building the
    TLB fault and page clear/copy handlers to avoid daddiu as appropriate.
    These are only effective if the erratum is verified to be present at the
    run time.

    Finally there is a trivial update to __delay(), because it uses daddiu in
    a branch delay slot.

    Signed-off-by: Maciej W. Rozycki
    Signed-off-by: Ralf Baechle

    Maciej W. Rozycki
     

12 Oct, 2007

1 commit


27 Aug, 2007

1 commit


13 Jul, 2007

2 commits


11 Jul, 2007

3 commits


06 Jul, 2007

1 commit


27 Jun, 2007

1 commit


11 May, 2007

1 commit


03 May, 2007

1 commit

  • I noticed that many source files include while they do
    not appear to need it. Here is an attempt to clean it all up.

    In order to find all possibly affected files, I searched for all
    files including but without any other occurence of "pci"
    or "PCI". I removed the include statement from all of these, then I
    compiled an allmodconfig kernel on both i386 and x86_64 and fixed the
    false positives manually.

    My tests covered 66% of the affected files, so there could be false
    positives remaining. Untested files are:

    arch/alpha/kernel/err_common.c
    arch/alpha/kernel/err_ev6.c
    arch/alpha/kernel/err_ev7.c
    arch/ia64/sn/kernel/huberror.c
    arch/ia64/sn/kernel/xpnet.c
    arch/m68knommu/kernel/dma.c
    arch/mips/lib/iomap.c
    arch/powerpc/platforms/pseries/ras.c
    arch/ppc/8260_io/enet.c
    arch/ppc/8260_io/fcc_enet.c
    arch/ppc/8xx_io/enet.c
    arch/ppc/syslib/ppc4xx_sgdma.c
    arch/sh64/mach-cayman/iomap.c
    arch/xtensa/kernel/xtensa_ksyms.c
    arch/xtensa/platform-iss/setup.c
    drivers/i2c/busses/i2c-at91.c
    drivers/i2c/busses/i2c-mpc.c
    drivers/media/video/saa711x.c
    drivers/misc/hdpuftrs/hdpu_cpustate.c
    drivers/misc/hdpuftrs/hdpu_nexus.c
    drivers/net/au1000_eth.c
    drivers/net/fec_8xx/fec_main.c
    drivers/net/fec_8xx/fec_mii.c
    drivers/net/fs_enet/fs_enet-main.c
    drivers/net/fs_enet/mac-fcc.c
    drivers/net/fs_enet/mac-fec.c
    drivers/net/fs_enet/mac-scc.c
    drivers/net/fs_enet/mii-bitbang.c
    drivers/net/fs_enet/mii-fec.c
    drivers/net/ibm_emac/ibm_emac_core.c
    drivers/net/lasi_82596.c
    drivers/parisc/hppb.c
    drivers/sbus/sbus.c
    drivers/video/g364fb.c
    drivers/video/platinumfb.c
    drivers/video/stifb.c
    drivers/video/valkyriefb.c
    include/asm-arm/arch-ixp4xx/dma.h
    sound/oss/au1550_ac97.c

    I would welcome test reports for these files. I am fine with removing
    the untested files from the patch if the general opinion is that these
    changes aren't safe. The tested part would still be nice to have.

    Note that this patch depends on another header fixup patch I submitted
    to LKML yesterday:
    [PATCH] scatterlist.h needs types.h
    http://lkml.org/lkml/2007/3/01/141

    Signed-off-by: Jean Delvare
    Cc: Badari Pulavarty
    Signed-off-by: Greg Kroah-Hartman

    Jean Delvare
     

05 Mar, 2007

1 commit


27 Feb, 2007

1 commit

  • Many Makefiles in arch/mips have EXTRA_AFLAGS := $(CFLAGS) line. This
    is redundant while AFLAGS contains $(cflags-y) and any options only
    listed in CFLAGS (not in cflags-y) should be unnecessary for asm
    sources.

    Signed-off-by: Atsushi Nemoto
    Signed-off-by: Ralf Baechle

    Atsushi Nemoto
     

20 Feb, 2007

1 commit

  • From the 01408c4939479ec46c15aa7ef6e2406be50eeeca log message:

    The problem is that when we write to a file, the copy from userspace to
    pagecache is first done with preemption disabled, so if the source
    address is not immediately available the copy fails *and* *zeros* *the*
    *destination*.

    This is a problem because a concurrent read (which admittedly is an odd
    thing to do) might see zeros rather that was there before the write, or
    what was there after, or some mixture of the two (any of these being a
    reasonable thing to see).

    If the copy did fail, it will immediately be retried with preemption
    re-enabled so any transient problem with accessing the source won't
    cause an error.

    The first copying does not need to zero any uncopied bytes, and doing
    so causes the problem. It uses copy_from_user_atomic rather than
    copy_from_user so the simple expedient is to change copy_from_user_atomic
    to *not* zero out bytes on failure.

    < --- end cite --- >

    This patch finally implements at least a not so pretty solution by
    duplicating the relevant part of __copy_user.

    Signed-off-by: Ralf Baechle

    Ralf Baechle
     

19 Feb, 2007

1 commit

  • This implementation has support for the concept of one separate ioport
    address space by PCI domain. A pointer to the virtual address where
    the port space of a domain has been mapped has been added to struct
    pci_controller and systems should be fixed to fill in this value. For
    single domain systems this will be the same value as passed to
    set_io_port_base().

    Signed-off-by: Ralf Baechle

    Ralf Baechle
     

07 Feb, 2007

2 commits

  • arch/mips/lib/uncached.c: In function 'run_uncached':
    arch/mips/lib/uncached.c:47: warning: comparison is always true due to limited range of data type
    arch/mips/lib/uncached.c:48: warning: comparison is always false due to limited range of data type
    arch/mips/lib/uncached.c:57: warning: comparison is always true due to limited range of data type
    arch/mips/lib/uncached.c:58: warning: comparison is always false due to limited range of data type

    Signed-off-by: Yoichi Yuasa
    Signed-off-by: Ralf Baechle

    Yoichi Yuasa
     
  • The 32-bit version and 64-bit version are almost equal. Unify them.
    This makes further improvements (for example, supporting CDEX, etc.)
    easier.

    Signed-off-by: Atsushi Nemoto
    Signed-off-by: Ralf Baechle

    Atsushi Nemoto
     

09 Jan, 2007

1 commit