11 Jul, 2007

2 commits

  • * 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus: (62 commits)
    [MIPS] PNX8550: Cleanup proc code.
    [MIPS] WRPPMC: Fix build.
    [MIPS] Yosemite: Fix modpost warnings.
    [MIPS] Change names of local variables to silence sparse
    [MIPS] SB1: Fix modpost warning.
    [MIPS] PNX: Fix modpost warnings.
    [MIPS] Alchemy: Fix modpost warnings.
    [MIPS] Non-FPAFF: Fix warning.
    [MIPS] DEC: Fix modpost warning.
    [MIPS] MIPSsim: Enable MIPSsim virtual network driver.
    [MIPS] Delete Ocelot 3 support.
    [MIPS] remove LASAT Networks platforms support
    [MIPS] Early check for SMTC kernel on non-MT processor
    [MIPS] Add debugfs files to show fpuemu statistics
    [MIPS] Add some debugfs files to debug unaligned accesses
    [MIPS] rbtx4938: Fix secondary PCIC and glue internal NICs
    [MIPS] tc35815: Load MAC address via platform_device
    [MIPS] Move FPU affinity code into separate file.
    [MIPS] Make ioremap() work on TX39/49 special unmapped segment
    [MIPS] rbtx4938: Update and minimize defconfig
    ...

    Linus Torvalds
     
  • Signed-off-by: Ralf Baechle

    Ralf Baechle
     

10 Jul, 2007

1 commit


09 May, 2007

2 commits


18 Apr, 2007

1 commit

  • While digging through my MAP_FIXED changes, I found that rather obvious
    bug in /dev/mem mmap implementation for nommu archs. get_unmapped_area()
    is expected to return an address, not a pfn.

    Signed-off-by: Benjamin Herrenschmidt
    Acked-By: David Howells
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Benjamin Herrenschmidt
     

23 Jan, 2007

1 commit

  • This reverts commit 99a10a60ba9bedcf5d70ef81414d3e03816afa3f.

    As per Hugh Dickins:

    "Nadia Derbey has reported that mmap of /dev/kmem no longer works with
    the kernel virtual address as offset, and Franck has confirmed that
    his patch came from a misunderstanding of what an offset means to
    /dev/kmem - whereas his patch description seems to say that he was
    correcting the offset on a few plaforms, there was no such problem to
    correct, and his patch was in fact changing its API on all platforms."

    Suggested-by: Hugh Dickins
    Cc: Franck Bui-Huu
    Cc: Nadia Derbey
    Cc: Andi Kleen
    Cc: Arjan van de Ven
    Cc: Andrew Morton
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

11 Dec, 2006

1 commit

  • Ramiro Voicu hits the BUG_ON(!pte_none(*pte)) in zeromap_pte_range: kernel
    bugzilla 7645. Right: read_zero_pagealigned uses down_read of mmap_sem,
    but another thread's racing read of /dev/zero, or a normal fault, can
    easily set that pte again, in between zap_page_range and zeromap_page_range
    getting there. It's been wrong ever since 2.4.3.

    The simple fix is to use down_write instead, but that would serialize reads
    of /dev/zero more than at present: perhaps some app would be badly
    affected. So instead let zeromap_page_range return the error instead of
    BUG_ON, and read_zero_pagealigned break to the slower clear_user loop in
    that case - there's no need to optimize for it.

    Use -EEXIST for when a pte is found: BUG_ON in mmap_zero (the other user of
    zeromap_page_range), though it really isn't interesting there. And since
    mmap_zero wants -EAGAIN for out-of-memory, the zeromaps better return that
    than -ENOMEM.

    Signed-off-by: Hugh Dickins
    Cc: Ramiro Voicu:
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hugh Dickins
     

09 Dec, 2006

1 commit


02 Dec, 2006

1 commit


13 Oct, 2006

2 commits

  • The recent commit (99a10a60ba9bedcf5d70ef81414d3e03816afa3f) to fix up
    mmap_kmem() broke compiles because it used PFN_DOWN() without including
    .

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • vma->vm_pgoff is an pfn _offset_ relatif to the begining
    of the memory start. The previous code was doing at first:

    vma->vm_pgoff << PAGE_SHIFT

    which results into a wrong physical address since some
    platforms have a physical mem start that can be different
    from 0. After that the previous call __pa() on this
    wrong physical address, however __pa() is used to convert
    a _virtual_ address into a physical one.

    This patch rewrites this convertion. It calculates the
    pfn of PAGE_OFFSET which is the pfn of the mem start
    then it adds the vma->vm_pgoff to it.

    It also uses virt_to_phys() instead of __pa() since the
    latter shouldn't be used by drivers.

    Signed-off-by: Franck Bui-Huu
    Signed-off-by: Linus Torvalds

    Franck Bui-Huu
     

30 Sep, 2006

1 commit

  • This change corrects the logic on the preprocessor conditionals that
    include support for ISA port i/o (/dev/ioports) into the mem character
    driver.

    This fixes the following error when building for powerpc platforms with
    CONFIG_PCI=n.

    drivers/built-in.o: undefined reference to `pci_io_base'

    Signed-off-by: Geoff Levand
    Acked-by: Linas Vepstas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Geoff Levand
     

27 Sep, 2006

1 commit

  • Set the backing device info capabilities for /dev/mem and /dev/kmem to
    permit direct sharing under no-MMU conditions and full mapping capabilities
    under MMU conditions. Make the BDI used by these available to all directly
    mappable character devices.

    Also comment the capabilities for /dev/zero.

    [akpm@osdl.org: ifdef reductions]
    Signed-off-by: David Howells
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Howells
     

11 Jul, 2006

1 commit

  • Newer ARMs have a 40 bit physical address space, but mapping physical
    memory above 4G needs a special page table format which we (currently?) do
    not use for userspace mappings, so what happens instead is that mapping an
    address >= 4G will happily discard the upper bits and wrap.

    There is a valid_mmap_phys_addr_range() arch hook where we could check for
    >= 4G addresses and deny the mapping, but this hook takes an unsigned long
    address:

    static inline int valid_mmap_phys_addr_range(unsigned long addr, size_t size);

    And drivers/char/mem.c:mmap_mem() calls it like this:

    static int mmap_mem(struct file * file, struct vm_area_struct * vma)
    {
    size_t size = vma->vm_end - vma->vm_start;

    if (!valid_mmap_phys_addr_range(vma->vm_pgoff << PAGE_SHIFT, size))

    So that's not much help either.

    This patch makes the hook take a pfn instead of a phys address.

    Signed-off-by: Lennert Buytenhek
    Cc: Bjorn Helgaas
    Cc: "Luck, Tony"
    Cc: Russell King
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Lennert Buytenhek
     

04 Jul, 2006

1 commit

  • Mark the static struct file_operations in drivers/char as const. Making
    them const prevents accidental bugs, and moves them to the .rodata section
    so that they no longer do any false sharing; in addition with the proper
    debug option they are then protected against corruption..

    [akpm@osdl.org: build fix]
    Signed-off-by: Arjan van de Ven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arjan van de Ven
     

01 Jul, 2006

1 commit


27 Jun, 2006

2 commits


26 Apr, 2006

1 commit


29 Mar, 2006

1 commit

  • Mark the f_ops members of inodes as const, as well as fix the
    ripple-through this causes by places that copy this f_ops and then "do
    stuff" with it.

    Signed-off-by: Arjan van de Ven
    Signed-off-by: Alexey Dobriyan
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arjan van de Ven
     

27 Mar, 2006

1 commit

  • Pass the size, not a pointer to the size, to efi_mem_attribute_range().

    This function validates memory regions for the /dev/mem read/write/mmap paths.
    The pointer allows arches to reduce the size of the range, but I think that's
    unnecessary complexity. Simplifying it will let me use
    efi_mem_attribute_range() to improve the ia64 ioremap() implementation.

    Signed-off-by: Bjorn Helgaas
    Cc: Matt Domsch
    Cc: "Tolentino, Matthew E"
    Cc: "Brown, Len"
    Cc: Andi Kleen
    Acked-by: "Luck, Tony"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Bjorn Helgaas
     

26 Mar, 2006

1 commit

  • The /dev/mem and /dev/kmem write handlers weren't fully POSIX compliant in
    that they wouldn't always force the file pointer to be updated when
    returning success status.

    The /dev/port write handler was inconsistent with the /dev/mem and
    /dev/kmem handlers in that when encountering a -EFAULT condition after
    already having written a number of items it would return -EFAULT rather
    than the number of bytes written.

    Signed-off-by: Jan Beulich
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jan Beulich
     

12 Jan, 2006

1 commit

  • This reverts part of "ppc64 iSeries: allow build with no PCI"
    (145d01e4287b8cbf50f87c3283e33bf5c84e8468) which affected generic code
    and applies a fix in the arch specific code.

    Commit "partly merge iseries do_IRQ"
    (5fee9b3b39eb55c7e3619a3b36ceeabffeb8f144) introduced iSeries_get_irq
    which was only available if CONFIG_PCI is set.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Paul Mackerras

    Stephen Rothwell
     

10 Jan, 2006

1 commit


09 Jan, 2006

3 commits

  • Add a hook so architectures can validate /dev/mem mmap requests.

    This is analogous to validation we already perform in the read/write
    paths.

    The identity mapping scheme used on ia64 requires that each 16MB or
    64MB granule be accessed with exactly one attribute (write-back or
    uncacheable). This avoids "attribute aliasing", which can cause a
    machine check.

    Sample problem scenario:
    - Machine supports VGA, so it has uncacheable (UC) MMIO at 640K-768K
    - efi_memmap_init() discards any write-back (WB) memory in the first granule
    - Application (e.g., "hwinfo") mmaps /dev/mem, offset 0
    - hwinfo receives UC mapping (the default, since memmap says "no WB here")
    - Machine check abort (on chipsets that don't support UC access to WB
    memory, e.g., sx1000)

    In the scenario above, the only choices are
    - Use WB for hwinfo mmap. Can't do this because it causes attribute
    aliasing with the UC mapping for the VGA MMIO space.
    - Use UC for hwinfo mmap. Can't do this because the chipset may not
    support UC for that region.
    - Disallow the hwinfo mmap with -EINVAL. That's what this patch does.

    Signed-off-by: Bjorn Helgaas
    Cc: Hugh Dickins
    Cc: "Luck, Tony"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Bjorn Helgaas
     
  • Tidy up __HAVE_PHYS_MEM_ACCESS_PROT usage to make mmap_mem() easier to read.

    Signed-off-by: Bjorn Helgaas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Bjorn Helgaas
     
  • kmsg_write returns with printk, so some programs may be confused by a
    successful write() with a return value different than the buffer length.

    # /bin/echo something > /dev/kmsg
    /bin/echo: write error: Inappropriate ioctl for device

    The drawbacks is that the printk return value can no more be quickly
    checked from userspace.

    Signed-off-by: Guillaume Chazarain
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Guillaume Chazarain
     

29 Nov, 2005

1 commit

  • This replaces the (in my opinion horrible) VM_UNMAPPED logic with very
    explicit support for a "remapped page range" aka VM_PFNMAP. It allows a
    VM area to contain an arbitrary range of page table entries that the VM
    never touches, and never considers to be normal pages.

    Any user of "remap_pfn_range()" automatically gets this new
    functionality, and doesn't even have to mark the pages reserved or
    indeed mark them any other way. It just works. As a side effect, doing
    mmap() on /dev/mem works for arbitrary ranges.

    Sparc update from David in the next commit.

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

23 Nov, 2005

1 commit

  • It's strange enough to be looking out for anonymous pages in VM_UNPAGED areas,
    let's not insert the ZERO_PAGE there - though whether it would matter will
    depend on what we decide about ZERO_PAGE refcounting.

    But whereas do_anonymous_page may (exceptionally) be called on a VM_UNPAGED
    area, do_no_page should never be: just BUG_ON.

    Signed-off-by: Hugh Dickins
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hugh Dickins
     

31 Oct, 2005

1 commit


29 Oct, 2005

2 commits

  • 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: Roland Dreier
    Cc: Anton Blanchard
    Cc: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Paul Mackerras

    Roland Dreier
     
  • The previous patch adding the ability to nest struct class_device
    changed the paramaters to the call class_device_create(). This patch
    fixes up all in-kernel users of the function.

    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

08 Sep, 2005

1 commit


14 Aug, 2005

1 commit


26 Jun, 2005

3 commits

  • o Following patch provides purely cosmetic changes and corrects CodingStyle
    guide lines related certain issues like below in kexec related files

    o braces for one line "if" statements, "for" loops,
    o more than 80 column wide lines,
    o No space after "while", "for" and "switch" key words

    o Changes:
    o take-2: Removed the extra tab before "case" key words.
    o take-3: Put operator at the end of line and space before "*/"

    Signed-off-by: Maneesh Soni
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Maneesh Soni
     
  • Removed the dependency on backup region. Now all the information is encoded
    in ELF format. /dev/oldmem is a dummy interface. User space tool need to be
    intelligent enough to parse the elf headers and read the relevant memory areas
    with the help of /dev/oldmem.

    Signed-off-by: Vivek Goyal
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vivek Goyal
     
  • Hariprasad Nellitheertha

    This patch contains the code that enables us to access the previous kernel's
    memory as /dev/oldmem.

    Signed-off-by: Eric Biederman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vivek Goyal
     

22 Jun, 2005

1 commit


21 Jun, 2005

1 commit