14 Feb, 2013

40 commits

  • The s390 architecture is unique in respect to dirty page detection,
    it uses the change bit in the per-page storage key to track page
    modifications. All other architectures track dirty bits by means
    of page table entries. This property of s390 has caused numerous
    problems in the past, e.g. see git commit ef5d437f71afdf4a
    "mm: fix XFS oops due to dirty pages without buffers on s390".

    To avoid future issues in regard to per-page dirty bits convert
    s390 to a fault based software dirty bit detection mechanism. All
    user page table entries which are marked as clean will be hardware
    read-only, even if the pte is supposed to be writable. A write by
    the user process will trigger a protection fault which will cause
    the user pte to be marked as dirty and the hardware read-only bit
    is removed.

    With this change the dirty bit in the storage key is irrelevant
    for Linux as a host, but the storage key is still required for
    KVM guests. The effect is that page_test_and_clear_dirty and the
    related code can be removed. The referenced bit in the storage
    key is still used by the page_test_and_clear_young primitive to
    provide page age information.

    For page cache pages of mappings with mapping_cap_account_dirty
    there will not be any change in behavior as the dirty bit tracking
    already uses read-only ptes to control the amount of dirty pages.
    Only for swap cache pages and pages of mappings without
    mapping_cap_account_dirty there can be additional protection faults.
    To avoid an excessive number of additional faults the mk_pte
    primitive checks for PageDirty if the pgprot value allows for writes
    and pre-dirties the pte. That avoids all additional faults for
    tmpfs and shmem pages until these pages are added to the swap cache.

    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     
  • Right now the page table upgrade does not happen if the end address
    of a fixed mapping is greater than TASK_SIZE.
    Enhance s390_mmap_check() to handle MAP_FIXED mappings correctly.

    Signed-off-by: Hendrik Brueckner
    Reviewed-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Hendrik Brueckner
     
  • Discard exit.data section at run time, not link time, since exit.text
    references exit.data and causes this build error:

    `.exit.data' referenced in section `.exit.text' of drivers/built-in.o:
    defined in discarded section `.exit.data' of drivers/built-in.o

    Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Heiko Carstens
     
  • Texas Instruments WL1273 I2C FM Radio (RADIO_WL1273) selects
    MFD_CORE, which itself depends on GENERIC_HARDIRQS.
    So add the dependency to the TI driver as well.

    Signed-off-by: Heiko Carstens
    Acked-by: Mauro Carvalho Chehab
    Signed-off-by: Martin Schwidefsky

    Heiko Carstens
     
  • s390 version of 855ddb56 "x86: bpf_jit_comp: add vlan tag support".

    Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Heiko Carstens
     
  • The AT91RM9200 driver call devm_request_irq() and therefore should
    depend on GENERIC_HARDIRQS to prevent link/compile errors on plaforms
    without GENERIC_HARDIRQS.

    Signed-off-by: Heiko Carstens
    Acked-by: David S. Miller
    Signed-off-by: Martin Schwidefsky

    Heiko Carstens
     
  • The iucv base layer is initialized during the registration of the
    first iucv handler. If no handler is registered and the
    iucv_reboot_event() notifier is called, a missing check can cause
    a kernel panic in iucv_block_cpu(). To solve this issue, check the
    IRQ masks invoke iucv_block_cpu() for enabled CPUs only.

    Signed-off-by: Hendrik Brueckner
    Signed-off-by: Martin Schwidefsky

    Hendrik Brueckner
     
  • Just like on other architectures. The intention is that this will reduce
    merge conflicts if new config options get added in sorted order as well.

    Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Heiko Carstens
     
  • Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Heiko Carstens
     
  • Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Heiko Carstens
     
  • When the DASD devices are detached from the driver, then the
    dasd_generic_remove function is called. One of the things this
    function should do is to remove the DASD specific sysfs attributes,
    but this is not done in all cases. This is likely to cause an oops
    when at a later point sysfs stumbles over the stale pointers. In
    particular this happens when when the modules are unloaded and loaded
    again.

    Signed-off-by: Stefan Weinhuber
    Signed-off-by: Martin Schwidefsky

    Stefan Weinhuber
     
  • Loading the pci hotplug module when no devices are present will fail
    but unfortunately some hotplug callbacks stay registered to the pci
    bus level. Fix this by not letting module loading fail when no pci
    devices are present and provide proper {de}registration functions
    for these callbacks.

    Reviewed-by: Gerald Schaefer
    Signed-off-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Sebastian Ott
     
  • Use the __get_free_pages wrapper in clp_alloc_block. Also change the
    allocation to use one page only. This page is used as CLP response
    block e.g. to list available pci functions. Using one page we can
    list > 250 pci functions at once and we have code to loop around this
    CLP command (if not all functions fit into to the CLP block) already
    in place.

    Acked-by: Gerald Schaefer
    Signed-off-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Sebastian Ott
     
  • Tell gcc that the memory region pointed to by req will be used (and
    changed). Also remove the (now) superfluous memory constraint.

    Acked-by: Gerald Schaefer
    Signed-off-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Sebastian Ott
     
  • The CPU-measurement counter facility does not support sampling events
    and returns -EINVAL in that case. This return code lets the perf tool
    fail. To fall back to software sampling events, return -ENOENT instead.

    Signed-off-by: Hendrik Brueckner
    Signed-off-by: Martin Schwidefsky

    Hendrik Brueckner
     
  • Only needed to make some drivers compile...

    Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Heiko Carstens
     
  • Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Heiko Carstens
     
  • Add s390 to the list of architectures that don' want ATA.

    Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Heiko Carstens
     
  • pci_probe is too generic and has a name clash with other common code parts.

    Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Heiko Carstens
     
  • There is no such function nor any caller in the whole kernel.

    Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Heiko Carstens
     
  • Provide empty dma_cache_sync() function.

    Acked-by: Sebastian Ott
    Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Heiko Carstens
     
  • Some of the now available common code drivers only compile if mb() is a define.

    Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Heiko Carstens
     
  • Fix name clash with some common code device drivers and add "tod"
    to all tod clock access function names.

    Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Heiko Carstens
     
  • Convert the defines for the !CONFIG_SCM* stuff to static inline
    functions.

    Signed-off-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Sebastian Ott
     
  • When an attempt to query or modify the grouping state of a channel path
    fails due to a timeout, we cannot be sure about its state. To get back to
    a defined state, disband the whole path group and try again while excluding
    the offending path.

    Reviewed-by: Peter Oberparleiter
    Signed-off-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Sebastian Ott
     
  • Add new attribute "vpm" to the subchannel sysfs directory of I/O
    subchannels. This attribute contains a path mask indicating which
    channel paths were successfully verified to be usable for I/O.

    Reviewed-by: Peter Oberparleiter
    Signed-off-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Sebastian Ott
     
  • Omit known to be broken paths (those set in path_noirq_mask) for the
    sense/set PGID and nop IO commands.

    Note: path_noirq_mask will be reset in ccw_device_verify_start (the
    paths could be healthy again). However if we restart a path
    verification via verify_start this mask will not be reset (there is
    no need to let the wait for an interrupt time out again - plus we
    do not want to loop once we deal with the paths in unknown path group
    state).

    Reviewed-by: Peter Oberparleiter
    Signed-off-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Sebastian Ott
     
  • Do not abort path verification when waiting for an interrupt timed out.
    Use path_noirq_mask to keep track of the paths used for this (also
    maintain a path_notoper_mask for debugging purposes). If the timeout
    happend to be during an operation where we query or alter the state of
    path groups set the pgid_unknown flag.

    With this change we allow usage of devices which have such ill-behaved
    paths (if at least one path is operational).

    Reviewed-by: Peter Oberparleiter
    Signed-off-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Sebastian Ott
     
  • Under LPAR the zfcpdump HSA is a shared resource. Up to now the HSA memory
    is released when the zcore file is closed. Dump programs that know that
    they do not need the HSA memory any more (e.g. because they already dumped it)
    could release it earlier. This would allow other LPARs to use it again.

    To achieve this a new debugfs file "hsa" is added that can be used to read
    the HSA size and to release the HSA by writing "0" into the file.

    Signed-off-by: Michael Holzheu
    Signed-off-by: Martin Schwidefsky

    Michael Holzheu
     
  • When a zfcpdump is triggered and a second dump on the same CEC is
    already in progress for another LPAR, diagnose 308 returns with
    an error code until the first dump is finished. Currently the
    second Linux stops with a disabled wait PSW in that case.

    This is improved now by by triggering diag 308 in a loop until
    it works.

    Signed-off-by: Michael Holzheu
    Signed-off-by: Martin Schwidefsky

    Michael Holzheu
     
  • Cleanup the functions used to call SEI.
    Also provide !CONFIG_PCI dummys for pci error handling.

    Reviewed-by: Peter Oberparleiter
    Signed-off-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Sebastian Ott
     
  • Signed-off-by: Ingo Tuchscherer
    Signed-off-by: Martin Schwidefsky

    Ingo Tuchscherer
     
  • Given enough debug options some modules can grow large enough
    that the GOT table gets bigger than 4K. On s390 the modules
    are compiled with -fpic which limits the GOT to 4K. The end
    result is a module that is loaded but won't work.

    Add a sanity check to apply_rela and return with an error if
    a relocation error is detected for a module.

    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     
  • Convert the synchronous size sense code to an interrupt driven
    approach. This allows to set the device online even if the
    terminal is not connected. With the new code views can be
    registered without a connected terminal, the tty can be opened
    as soon as the device is online. After the terminal has been
    connected and the size has been determined the tty is resized
    to match the device characteristics..

    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     
  • Add a notifier to create / destroy the device nodes for the tty view
    and the fullscreen view. Only device nodes for online devices are
    created and the device names will follow the convention as outlined
    in Documentation/devices.txt: 3270/tty for the tty nodes,
    3270/tub for hte fullscreen nodes and 3270/tub for the fullscreen
    control node.

    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     
  • Corrects the order of tasklet_init vs. the allocation of the
    read request which has been broken by git commit 9d2ae233
    "TTY: tty3270, move initialization to allocation".

    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     
  • Reintroduce the tty3270_open function which has been removed by
    git commit 20cda6f2 "TTY: tty3270, add tty install". Without
    the open function in the tty_operations tty_open will return
    -ENODEV and the 3270 tty will not work.

    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     
  • E.g. readl is defined like this

    #define readl(addr) __le32_to_cpu(__raw_readl(addr))

    If a there is a readl() call that doesn't check the return value
    this will cause a compile warning on big endian machines due to
    the __le32_to_cpu macro magic.

    E.g. code like this:

    readl(addr);

    will generate the following compile warning:

    warning: value computed is not used [-Wunused-value]

    With this patch we get rid of dozens of compile warnings on s390.

    Signed-off-by: Heiko Carstens
    Acked-by: Arnd Bergmann
    Signed-off-by: Martin Schwidefsky

    Heiko Carstens
     
  • Pull networking fixes from David Miller:
    "This is primarily to get those r8169 reverts sorted, but other fixes
    have accumulated meanwhile.

    1) Revert two r8169 changes to fix suspend/resume for some users,
    from Francois Romieu.

    2) PCI dma mapping errors in atl1c are not checked for and this cause
    hard crashes for some users, from Xiong Huang.

    3) In 3.8.x we merged the removal of the EXPERIMENTAL dependency for
    'dlm' but the same patch for 'sctp' got lost somewhere, resulting
    in the potential for build errors since there are cross
    dependencies. From Kees Cook.

    4) SCTP's ipv6 socket route validation makes boolean tests
    incorrectly, fix from Daniel Borkmann.

    5) mac80211 does sizeof(ptr) instead of (sizeof(ptr) * nelem), from
    Cong Ding.

    6) arp_rcv() can crash on shared non-linear packets, from Eric
    Dumazet.

    7) Avoid crashes in macvtap by setting ->gso_type consistently in
    ixgbe, qlcnic, and bnx2x drivers. From Michael S Tsirkin and
    Alexander Duyck.

    8) Trinity fuzzer spots infinite loop in __skb_recv_datagram(), fix
    from Eric Dumazet.

    9) STP protocol frames should use high packet priority, otherwise an
    overloaded bridge can get stuck. From Stephen Hemminger.

    10) The HTB packet scheduler was converted some time ago to store
    internal timestamps in nanoseconds, but we don't convert back into
    psched ticks for the user during dumps. Fix from Jiri Pirko.

    11) mwl8k channel table doesn't set the .band field properly,
    resulting in NULL pointer derefs. Fix from Jonas Gorski.

    12) mac80211 doesn't accumulate channels properly during a scan so we
    can downgrade heavily to a much less desirable connection speed.
    Fix from Johannes Berg.

    13) PHY probe failure in stmmac can result in resource leaks and
    double MDIO registery later, from Giuseppe CAVALLARO.

    14) Correct ipv6 checksumming in ip6t_NPT netfilter module, also fix
    address prefix mangling, from YOSHIFUJI Hideaki."

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (27 commits)
    net, sctp: remove CONFIG_EXPERIMENTAL
    net: sctp: sctp_v6_get_dst: fix boolean test in dst cache
    batman-adv: Fix NULL pointer dereference in DAT hash collision avoidance
    net/macb: fix race with RX interrupt while doing NAPI
    atl1c: add error checking for pci_map_single functions
    htb: fix values in opt dump
    ixgbe: Only set gso_type to SKB_GSO_TCPV4 as RSC does not support IPv6
    net: fix infinite loop in __skb_recv_datagram()
    net: qmi_wwan: add Yota / Megafon M100-1 4g modem
    mwl8k: fix band for supported channels
    bridge: set priority of STP packets
    mac80211: fix channel selection bug
    arp: fix possible crash in arp_rcv()
    bnx2x: set gso_type
    qlcnic: set gso_type
    ixgbe: fix gso type
    stmmac: mdio register has to fail if the phy is not found
    stmmac: fix macro used for debugging the xmit
    Revert "r8169: enable internal ASPM and clock request settings".
    Revert "r8169: enable ALDPS for power saving".
    ...

    Linus Torvalds
     
  • Pull x86 fixes from Peter Anvin:
    "One (hopefully) last batch of x86 fixes. You asked for the patch by
    patch justifications, so here they are:

    x86, MCE: Retract most UAPI exports

    This one unexports from userspace a bunch of definitions which should
    never have been exported. We really don't want to create an
    accidental legacy here.

    x86, doc: Add a bootloader ID for OVMF

    This is a documentation-only patch, just recording the official
    assignment of a boot loader ID.

    x86: Do not leak kernel page mapping locations

    Security: avoid making it needlessly easy for user space to probe the
    kernel memory layout.

    x86/mm: Check if PUD is large when validating a kernel address

    Prevent failures using /proc/kcore when using 1G pages.

    x86/apic: Work around boot failure on HP ProLiant DL980 G7 Server systems

    Works around a BIOS problem causing boot failures on affected hardware."

    * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/mm: Check if PUD is large when validating a kernel address
    x86/apic: Work around boot failure on HP ProLiant DL980 G7 Server systems
    x86, doc: Add a bootloader ID for OVMF
    x86: Do not leak kernel page mapping locations
    x86, MCE: Retract most UAPI exports

    Linus Torvalds