05 Sep, 2013

5 commits


31 Aug, 2013

5 commits

  • This helps remove asid-to-mm reverse map

    While mm->context.id contains the ASID assigned to a process, our ASID
    allocator also used asid_mm_map[] reverse map. In a new allocation
    cycle (mm->ASID >= @asid_cache), the Round Robin ASID allocator used this
    to check if new @asid_cache belonged to some mm2 (from prev cycle).
    If so, it could locate that mm using the ASID reverse map, and mark that
    mm as unallocated ASID, to force it to refresh at the time of switch_mm()

    However, for SMP, the reverse map has to be maintained per CPU, so
    becomes 2 dimensional, hence got rid of it.

    With reverse map gone, it is NOT possible to reach out to current
    assignee. So we track the ASID allocation generation/cycle and
    on every switch_mm(), check if the current generation of CPU ASID is
    same as mm's ASID; If not it is refreshed.

    (Based loosely on arch/sh implementation)

    Signed-off-by: Vineet Gupta

    Vineet Gupta
     
  • ASID allocation changes/2

    Use the fact that switch_mm() and activate_mm() are exactly same code
    now while acknowledging the semantical difference in comment

    Signed-off-by: Vineet Gupta

    Vineet Gupta
     
  • ASID allocation changes/1

    This patch does 2 things:

    (1) get_new_mmu_context() NOW moves mm->ASID to a new value ONLY if it
    was from a prev allocation cycle/generation OR if mm had no ASID
    allocated (vs. before would unconditionally moving to a new ASID)

    Callers desiring unconditional update of ASID, e.g.local_flush_tlb_mm()
    (for parent's address space invalidation at fork) need to first force
    the parent to an unallocated ASID.

    (2) get_new_mmu_context() always sets the MMU PID reg with unchanged/new
    ASID value.

    The gains are:
    - consolidation of all asid alloc logic into get_new_mmu_context()
    - avoiding code duplication in switch_mm() for PID reg setting
    - Enables future change to fold activate_mm() into switch_mm()

    Signed-off-by: Vineet Gupta

    Vineet Gupta
     
  • -Asm code already has values of SW and HW ASID values, so they can be
    passed to the printing routine.

    Signed-off-by: Vineet Gupta

    Vineet Gupta
     
  • Signed-off-by: Vineet Gupta

    Vineet Gupta
     

30 Aug, 2013

3 commits


29 Aug, 2013

2 commits

  • The current ARC VM code has 13 flags in Page Table entry: some software
    (accesed/dirty/non-linear-maps) and rest hardware specific. With 8k MMU
    page, we need 19 bits for addressing page frame so remaining 13 bits is
    just about enough to accomodate the current flags.

    In MMUv4 there are 2 additional flags, SZ (normal or super page) and WT
    (cache access mode write-thru) - and additionally PFN is 20 bits (vs. 19
    before for 8k). Thus these can't be held in current PTE w/o making each
    entry 64bit wide.

    It seems there is some scope of compressing the current PTE flags (and
    freeing up a few bits). Currently PTE contains fully orthogonal distinct
    access permissions for kernel and user mode (Kr, Kw, Kx; Ur, Uw, Ux)
    which can be folded into one set (R, W, X). The translation of 3 PTE
    bits into 6 TLB bits (when programming the MMU) can be done based on
    following pre-requites/assumptions:

    1. For kernel-mode-only translations (vmalloc: 0x7000_0000 to
    0x7FFF_FFFF), PTE additionally has PAGE_GLOBAL flag set (and user
    space entries can never be global). Thus such a PTE can translate
    to Kr, Kw, Kx (as appropriate) and zero for User mode counterparts.

    2. For non global entries, the PTE flags can be used to create mirrored
    K and U TLB bits. This is true after commit a950549c675f2c8c504
    "ARC: copy_(to|from)_user() to honor usermode-access permissions"
    which ensured that user-space translations _MUST_ have same access
    permissions for both U/K mode accesses so that copy_{to,from}_user()
    play fair with fault based CoW break and such...

    There is no such thing as free lunch - the cost is slightly infalted
    TLB-Miss Handlers.

    Signed-off-by: Vineet Gupta

    Vineet Gupta
     
  • * reduce editor lines taken by pt_regs
    * ARCompact ISA specific part of TLB Miss handlers clubbed together
    * cleanup some comments

    Signed-off-by: Vineet Gupta

    Vineet Gupta
     

26 Aug, 2013

8 commits

  • In the exception return path, for both U/K cases, intr are already
    disabled (for various existing reasons). So when we drop down to
    @restore_regs, we need not redo that.

    There was subtle issue - when intr were NOT being disabled for
    ret-to-kernel-but-no-preemption case - now fixed by moving the
    IRQ_DISABLE further up in @resume_kernel_mode.

    So what do we gain:

    * Shaves off a few insn in return path.

    * Eliminates the need for IRQ_DISABLE_SAVE assembler macro for ARCv2
    hence allows for entry code sharing.

    Signed-off-by: Vineet Gupta

    Vineet Gupta
     
  • After the recent cleanups, all the exception handlers now have same
    boilerplate prologue code. Move that into common macro.

    This reduces readability but helps greatly with sharing / duplicating
    entry code with ARCv2 ISA where the handlers are pretty much the same,
    just the entry prologue is different (due to hardware assist).

    Also while at it, add the missing FAKE_RET_FROM_EXCPN calls in couple of
    places to drop down to pure kernel mode (from exception mode) before
    jumping off into "C" code.

    Signed-off-by: Vineet Gupta

    Vineet Gupta
     
  • Signed-off-by: Vineet Gupta

    Vineet Gupta
     
  • Linus Torvalds
     
  • Pull staging fixes from Greg KH:
    "Here are two tiny staging tree fixes (well, one is for an iio driver,
    but those updates come through the staging tree due to dependancies)

    One fixes a problem with an IIO driver, and the other fixes a bug in
    the comedi driver core"

    * tag 'staging-3.11-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
    staging: comedi: bug-fix NULL pointer dereference on failed attach
    iio: adjd_s311: Fix non-scan mode data read

    Linus Torvalds
     
  • Pull USB fixes from Greg KH:
    "Here are two USB fixes for 3.11-rc7

    One fixes a reported regression in the OHCI driver, and the other
    fixes a reported build breakage in the USB phy drivers"

    * tag 'usb-3.11-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
    usb: phy: fix build breakage
    USB: OHCI: add missing PCI PM callbacks to ohci-pci.c

    Linus Torvalds
     
  • Pull ARM fixes from Russell King:
    "This round of fixes is smaller than previous: a couple more updates
    for the security fixes, and a one-liner kexec fix"

    * 'fixes' of git://git.linaro.org/people/rmk/linux-arm:
    ARM: 7816/1: CONFIG_KUSER_HELPERS: fix help text
    ARM: 7815/1: kexec: offline non panic CPUs on Kdump panic
    ARM: 7819/1: fiq: Cast the first argument of flush_icache_range()

    Linus Torvalds
     
  • Pull vfs fixes from Al Viro:
    "Assorted fixes from the last week or so"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    VFS: collect_mounts() should return an ERR_PTR
    bfs: iget_locked() doesn't return an ERR_PTR
    efs: iget_locked() doesn't return an ERR_PTR()
    proc: kill the extra proc_readfd_common()->dir_emit_dots()
    cope with potentially long ->d_dname() output for shmem/hugetlb

    Linus Torvalds
     

25 Aug, 2013

8 commits

  • Pull ACPI fix from Rafael Wysocki:
    "I really hoped that it wouldn't be necessary to change anything in
    ACPI at this point, but it turns out that we need to revert one more
    ACPI video commit causing trouble.

    This reverts a change in the ACPI video driver that caused the ACPI
    backlight initialization to be carried out even if acpi_backlight=vendor
    is passed in the kernel command line which turns out to break things
    at least on one system"

    * tag 'acpi-3.11-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    Revert "ACPI / video: Always call acpi_video_init_brightness() on init"

    Linus Torvalds
     
  • Pull SCSI fixes from James Bottomley:
    "This is a set of small bug fixes for lpfc and zfcp and a fix for a
    fairly nasty bug in sg where a process which cancels I/O completes in
    a kernel thread which would then try to write back to the now gone
    userspace and end up writing to a random kernel address instead"

    * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
    [SCSI] zfcp: remove access control tables interface (keep sysfs files)
    [SCSI] zfcp: fix schedule-inside-lock in scsi_device list loops
    [SCSI] zfcp: fix lock imbalance by reworking request queue locking
    [SCSI] sg: Fix user memory corruption when SG_IO is interrupted by a signal
    [SCSI] lpfc: Don't force CONFIG_GENERIC_CSUM on

    Linus Torvalds
     
  • For a search buffer, 2 byte aligned, strchr() was returning pointer
    outside of buffer (buf - 1)

    ------------->8----------------
    // Input buffer (default 4 byte aigned)
    char *buffer = "1AA_";

    // actual search start (to mimick 2 byte alignment)
    char *current_line = &(buffer[2]);

    // Character to search for
    char c = 'A';

    char *c_pos = strchr(current_line, c);

    printf("%s\n", c_pos) --> 'AA_' as oppose to 'A_'
    ------------->8----------------

    Reported-by: Anton Kolesov
    Debugged-by: Anton Kolesov
    Cc: # [3.9 and 3.10]
    Cc: Noam Camus
    Signed-off-by: Joern Rennecke
    Signed-off-by: Vineet Gupta
    Signed-off-by: Linus Torvalds

    Joern Rennecke
     
  • This should actually be returning an ERR_PTR on error instead of NULL.
    That was how it was designed and all the callers expect it.

    [AV: actually, that's what "VFS: Make clone_mnt()/copy_tree()/collect_mounts()
    return errors" missed - originally collect_mounts() was expected to return
    NULL on failure]

    Cc: # 3.10+
    Signed-off-by: Dan Carpenter
    Signed-off-by: Al Viro

    Dan Carpenter
     
  • iget_locked() returns a NULL on error, it doesn't return an ERR_PTR.

    Signed-off-by: Dan Carpenter
    Signed-off-by: Al Viro

    Dan Carpenter
     
  • The iget_locked() function returns NULL on error and never an ERR_PTR.

    Signed-off-by: Dan Carpenter
    Signed-off-by: Al Viro

    Dan Carpenter
     
  • proc_readfd_common() does dir_emit_dots() twice in a row,
    we need to do this only once.

    Signed-off-by: Oleg Nesterov
    Signed-off-by: Al Viro

    Oleg Nesterov
     
  • dynamic_dname() is both too much and too little for those - the
    output may be well in excess of 64 bytes dynamic_dname() assumes
    to be enough (thanks to ashmem feeding really long names to
    shmem_file_setup()) and vsnprintf() is an overkill for those
    guys.

    Signed-off-by: Al Viro

    Al Viro
     

24 Aug, 2013

9 commits

  • Pull libata fixes from Tejun Heo:
    "This contains three commits all of which are updates for specific
    devices which aren't too widespread. Pretty limited scope and nothing
    too interesting or dangerous"

    * 'for-3.11-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata:
    sata_fsl: save irqs while coalescing
    libata: apply behavioral quirks to sil3826 PMP
    sata, highbank: fix ordering of SGPIO signals

    Linus Torvalds
     
  • Pull cgroup fix from Tejun Heo:
    "A late fix for cgroup.

    This fixes a behavior regression visible to userland which was created
    by a commit merged during -rc1. While the behavior change isn't too
    likely to be noticeable, the fix is relatively low risk and we'll need
    to backport it through -stable anyway if the bug gets released"

    * 'for-3.11-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:
    cpuset: fix a regression in validating config change

    Linus Torvalds
     
  • Pull drm fixes from Dave Airlie:
    "Ben was on holidays for a week so a few nouveau regression fixes
    backed up, but they all seem necessary.

    Otherwise one i915 and one gma500 fix"

    * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
    gma500: Fix SDVO turning off randomly
    drm/nv04/disp: fix framebuffer pin refcounting
    drm/nouveau/mc: fix race condition between constructor and request_irq()
    drm/nouveau: fix reclocking on nv40
    drm/nouveau/ltcg: fix allocating memory as free
    drm/nouveau/ltcg: fix ltcg memory initialization after suspend
    drm/nouveau/fb: fix null derefs in nv49 and nv4e init
    drm/i915: Invalidate TLBs for the rings after a reset

    Linus Torvalds
     
  • Commit 94ae9843 (usb: phy: rename all phy drivers to phy-$name-usb.c)
    renamed drivers/usb/phy/otg_fsm.h to drivers/usb/phy/phy-fsm-usb.h
    but changed drivers/usb/phy/phy-fsm-usb.c to include not existing
    "phy-otg-fsm.h" instead of new "phy-fsm-usb.h". This breaks building:
    ...
    drivers/usb/phy/phy-fsm-usb.c:32:25: fatal error: phy-otg-fsm.h: No such file or directory
    compilation terminated.
    make[3]: *** [drivers/usb/phy/phy-fsm-usb.o] Error 1

    This commit also missed to modify drivers/usb/phy/phy-fsl-usb.h
    to include new "phy-fsm-usb.h" instead of "otg_fsm.h" resulting
    in another build breakage:
    ...
    In file included from drivers/usb/phy/phy-fsl-usb.c:46:0:
    drivers/usb/phy/phy-fsl-usb.h:18:21: fatal error: otg_fsm.h: No such file or directory
    compilation terminated.
    make[3]: *** [drivers/usb/phy/phy-fsl-usb.o] Error 1

    Fix both issues.

    Signed-off-by: Anatolij Gustschin
    Cc: stable # 3.10+
    Signed-off-by: Greg Kroah-Hartman

    Anatolij Gustschin
     
  • Commit c1117afb8589 (USB: OHCI: make ohci-pci a separate driver)
    neglected to preserve the entries for the pci_suspend and pci_resume
    driver callbacks. As a result, OHCI controllers don't work properly
    during suspend and after hibernation.

    This patch adds the missing callbacks to the driver.

    Signed-off-by: Alan Stern
    Reported-and-tested-by: Steve Cotton
    Signed-off-by: Greg Kroah-Hartman

    Alan Stern
     
  • Commit dcd7b8bd63cb81c5b973bf86510ca3c80bbbd162 ("staging: comedi: put
    module _after_ detach" by myself) reversed a couple of calls in
    `comedi_device_attach()` when recovering from an error returned by the
    low-level driver's 'attach' handler. Unfortunately, that introduced a
    NULL pointer dereference bug as `dev->driver` is NULL after the call to
    `comedi_device_detach()`. We still have a pointer to the low-level
    comedi driver structure in the `driv` variable, so use that instead.

    Signed-off-by: Ian Abbott
    Cc: # 3.10+
    Signed-off-by: Greg Kroah-Hartman

    Ian Abbott
     
  • Merge networking fixes from David Miller:

    1) Revert Johannes Berg's genetlink locking fix, because it causes
    regressions.

    Johannes and Pravin Shelar are working on fixing things properly.

    2) Do not drop ipv6 ICMP messages without a redirected header option,
    they are legal. From Duan Jiong.

    3) Missing error return propagation in probing of via-ircc driver.
    From Alexey Khoroshilov.

    4) Do not clear out broadcast/multicast/unicast/WOL bits in r8169 when
    initializing, from Peter Wu.

    5) realtek phy driver programs wrong interrupt status bit, from
    Giuseppe CAVALLARO.

    6) Fix statistics regression in AF_PACKET code, from Willem de Bruijn.

    7) Bridge code uses wrong bitmap length, from Toshiaki Makita.

    8) SFC driver uses wrong indexes to look up MAC filters, from Ben
    Hutchings.

    9) Don't pass stack buffers into usb control operations in hso driver,
    from Daniel Gimpelevich.

    10) Multiple ipv6 fragmentation headers in one packet is illegal and
    such packets should be dropped, from Hannes Frederic Sowa.

    11) When TCP sockets are "repaired" as part of checkpoint/restart, the
    timestamp field of SKBs need to be refreshed otherwise RTOs can be
    wildly off. From Andrey Vagin.

    12) Fix memcpy args (uses 'address of pointer' instead of 'pointer') in
    hostp driver. From Dan Carpenter.

    13) nl80211hdr_put() doesn't return an ERR_PTR, but some code believes
    it does. From Dan Carpenter.

    14) Fix regression in wireless SME disconnects, from Johannes Berg.

    15) Don't use a stack buffer for DMA in zd1201 USB wireless driver, from
    Jussi Kivilinna.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (33 commits)
    ipv4: expose IPV4_DEVCONF
    ipv6: handle Redirect ICMP Message with no Redirected Header option
    be2net: fix disabling TX in be_close()
    Revert "genetlink: fix family dump race"
    hso: Fix stack corruption on some architectures
    hso: Earlier catch of error condition
    sfc: Fix lookup of default RX MAC filters when steered using ethtool
    bridge: Use the correct bit length for bitmap functions in the VLAN code
    packet: restore packet statistics tp_packets to include drops
    net: phy: rtl8211: fix interrupt on status link change
    r8169: remember WOL preferences on driver load
    via-ircc: don't return zero if via_ircc_open() failed
    macvtap: Ignore tap features when VNET_HDR is off
    macvtap: Correctly set tap features when IFF_VNET_HDR is disabled.
    macvtap: simplify usage of tap_features
    tcp: set timestamps for restored skb-s
    bnx2x: set VF DMAE when first function has 0 supported VFs
    bnx2x: Protect against VFs' ndos when SR-IOV is disabled
    bnx2x: prevent VF benign attentions
    bnx2x: Consider DCBX remote error
    ...

    Linus Torvalds
     
  • Merge fixes from Andrew Morton:
    "A few fixes. One is a licensing change and I don't do licensing, so
    please eyeball that one"

    Licensing eye-balled.

    * emailed patches from Andrew Morton :
    lib/lz4: correct the LZ4 license
    memcg: get rid of swapaccount leftovers
    nilfs2: fix issue with counting number of bio requests for BIO_EOPNOTSUPP error detection
    nilfs2: remove double bio_put() in nilfs_end_bio_write() for BIO_EOPNOTSUPP error
    drivers/platform/olpc/olpc-ec.c: initialise earlier

    Linus Torvalds
     
  • The LZ4 code is listed as using the "BSD 2-Clause License".

    Signed-off-by: Richard Laager
    Acked-by: Kyungsik Lee
    Cc: Chanho Min
    Cc: Richard Yao
    Signed-off-by: Andrew Morton
    [ The 2-clause BSD can be just converted into GPL, but that's rude and
    pointless, so don't do it - Linus ]
    Signed-off-by: Linus Torvalds

    Richard Laager