28 Apr, 2007

1 commit

  • * master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6: (448 commits)
    [IPV4] nl_fib_lookup: Initialise res.r before fib_res_put(&res)
    [IPV6]: Fix thinko in ipv6_rthdr_rcv() changes.
    [IPV4]: Add multipath cached to feature-removal-schedule.txt
    [WIRELESS] cfg80211: Clarify locking comment.
    [WIRELESS] cfg80211: Fix locking in wiphy_new.
    [WEXT] net_device: Don't include wext bits if not required.
    [WEXT]: Misc code cleanups.
    [WEXT]: Reduce inline abuse.
    [WEXT]: Move EXPORT_SYMBOL statements where they belong.
    [WEXT]: Cleanup early ioctl call path.
    [WEXT]: Remove options.
    [WEXT]: Remove dead debug code.
    [WEXT]: Clean up how wext is called.
    [WEXT]: Move to net/wireless
    [AFS]: Eliminate cmpxchg() usage in vlocation code.
    [RXRPC]: Fix pointers passed to bitops.
    [RXRPC]: Remove bogus atomic_* overrides.
    [AFS]: Fix u64 printing in debug logging.
    [AFS]: Add "directory write" support.
    [AFS]: Implement the CB.InitCallBackState3 operation.
    ...

    Linus Torvalds
     

27 Apr, 2007

9 commits

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

    Heiko Carstens
     
  • The page_test_and_clear_dirty primitive really consists of two
    operations, page_test_dirty and the page_clear_dirty. The combination
    of the two is not an atomic operation, so it makes more sense to have
    two separate operations instead of one.
    In addition to the improved readability of the s390 version of
    SetPageUptodate, it now avoids the page_test_dirty operation which is
    an insert-storage-key-extended (iske) instruction which is an expensive
    operation.

    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     
  • Generate uevents for all cpus if cpu capability changes. This can
    happen e.g. because the cpus are overheating. The cpu capability can
    be read via /sys/devices/system/cpu/cpuN/capability.

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

    Heiko Carstens
     
  • s390 machines provide hardware support for creating Linux dumps on SCSI
    disks. For creating a dump a special purpose dump Linux is used. The first
    32 MB of memory are saved by the hardware before the dump Linux is
    booted. Via an SCLP interface, the saved memory can be accessed from
    Linux. This patch exports memory and registers of the crashed Linux to
    userspace via a debugfs file. For more information refer to
    Documentation/s390/zfcpdump.txt, which is included in this patch.

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

    Michael Holzheu
     
  • Generic bug implementation for s390. Will increase the value of the
    console output on BUG() statements since registers r0-r5,r14 will
    not be clobbered by a printk() call that was previously done before
    the illegal instruction of BUG() was hit.
    Also implements an architecture specific WARN_ON(). Output of that
    could be increased but requires common code change.

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

    Heiko Carstens
     
  • This patch adds two improvements to the oops output. First it adds an
    additional line after the PSW which decodes the different fields of it.
    Second a disassembler is added that decodes the instructions surrounding
    the faulting PSW. The output of a test oops now looks like this:

    kernel BUG at init/main.c:419
    illegal operation: 0001 [#1]
    CPU: 0 Not tainted
    Process swapper (pid: 0, task: 0000000000464968, ksp: 00000000004be000)
    Krnl PSW : 0700000180000000 00000000000120b6 (rest_init+0x36/0x38)
    R:0 T:1 IO:1 EX:1 Key:0 M:0 W:0 P:0 AS:0 CC:0 PM:0 EA:3
    Krnl GPRS: 0000000000000003 00000000004ba017 0000000000000022 0000000000000001
    000000000003a5f6 0000000000000000 00000000004be6a8 0000000000000000
    0000000000000000 00000000004b8200 0000000000003a50 0000000000008000
    0000000000516368 000000000033d008 00000000000120b2 00000000004bdee0
    Krnl Code: 00000000000120a6: e3e0f0980024 stg %r14,152(%r15)
    00000000000120ac: c0e500014296 brasl %r14,3a5d8
    00000000000120b2: a7f40001 brc 15,120b4
    >00000000000120b6: 0707 bcr 0,%r7
    00000000000120b8: eb7ff0500024 stmg %r7,%r15,80(%r15)
    00000000000120be: c0d000195825 larl %r13,33d108
    00000000000120c4: a7f13f00 tmll %r15,16128
    00000000000120c8: a7840001 brc 8,120ca
    Call Trace:
    ([] rest_init+0x32/0x38)
    [] start_kernel+0x37c/0x410
    [] _ehead+0x20/0x80

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

    Martin Schwidefsky
     
  • Introduce a mutex for struct ccwgroup to prevent simuntaneous
    register/unregister on the same ccwgroup device.

    Signed-off-by: Cornelia Huck
    Signed-off-by: Martin Schwidefsky

    Cornelia Huck
     
  • Add a new attribute to the channel-path sysfs directory through which
    channel-path configure operations can be triggered. Also listen for
    hardware events requesting channel-path configure operations and
    process them accordingly.

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

    Peter Oberparleiter
     
  • Clean interface between cio and ipl code, so Peter stops complaining.

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

    Heiko Carstens
     

26 Apr, 2007

2 commits

  • Now that network timestamps use ktime_t infrastructure, we can add a new
    SOL_SOCKET sockopt SO_TIMESTAMPNS.

    This command is similar to SO_TIMESTAMP, but permits transmission of
    a 'timespec struct' instead of a 'timeval struct' control message.
    (nanosecond resolution instead of microsecond)

    Control message is labelled SCM_TIMESTAMPNS instead of SCM_TIMESTAMP

    A socket cannot mix SO_TIMESTAMP and SO_TIMESTAMPNS : the two modes are
    mutually exclusive.

    sock_recv_timestamp() became too big to be fully inlined so I added a
    __sock_recv_timestamp() helper function.

    Signed-off-by: Eric Dumazet
    CC: linux-arch@vger.kernel.org
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • Now network timestamps use ktime_t infrastructure, we can add a new
    ioctl() SIOCGSTAMPNS command to get timestamps in 'struct timespec'.
    User programs can thus access to nanosecond resolution.

    Signed-off-by: Eric Dumazet
    CC: Stephen Hemminger
    Signed-off-by: David S. Miller

    Eric Dumazet
     

27 Mar, 2007

1 commit

  • git commit f994aae1bd8e4813d59a2ed64d17585fe42d03fc changed the
    function declaration of csum_tcpudp_nofold. Argument types were
    changed from unsigned long to __be32 (unsigned int). Therefore we
    lost the implicit type conversion that zeroed the upper half of the
    registers that are used to pass parameters. Since the inline assembly
    relied on this we ended up adding random values and wrong checksums
    were created.
    Showed only up on machines with more than 4GB since gcc produced code
    where the registers that are used to pass 'saddr' and 'daddr' previously
    contained addresses before calling this function.
    Fix this by using 32 bit arithmetics and convert code to C, since gcc
    produces better code than these hand-optimized versions.

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

    Heiko Carstens
     

19 Mar, 2007

2 commits


06 Mar, 2007

2 commits


21 Feb, 2007

5 commits


12 Feb, 2007

4 commits

  • Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     
  • The current ccw_device_set_options() sets a specified mask of options
    and clears those not specified, but there is no way to find out which
    options have already been set.

    In order to fix this up, introduce the following interface changes:

    ccw_device_set_options() now only sets the specified bits, but does
    not clear those that are not specified.

    ccw_device_clear_options() clears the specified bits.

    ccw_device_set_options_mask() provides the old semantics (setting only
    the specified bits and clearing the others).

    Device drivers now work as expected. qdio has been adapted.

    Signed-off-by: Cornelia Huck
    Signed-off-by: Martin Schwidefsky

    Cornelia Huck
     
  • Martin Schwidefsky wrote:
    "s390 does not even need (in|out)b(_p|). I wondered what else from
    io.h do we not need. The answer is: almost nothing. With the devres
    patch from Al and the dma-mapping patch from Heiko we can get rid of
    iomem and all associated definitions."

    So we'll just need to replace NO_IOPORT with NO_IOMEM in Kconfig and
    kill arch/s390/mm/ioremap.c.

    BTW, there's an annoying bit of junk in there - IO_SPACE_LIMIT. We
    only need it for /proc/ioports, which AFAICS shouldn't even be there
    on s390 (or uml). OTOH, removing that thing would mean a user-visible
    change - we go from "empty file in /proc" to "no such file in /proc"...

    Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Al Viro
     
  • The line discipline numbers N_* are currently defined for each architecture
    individually, but (except for a seeming mistake) identically, in
    asm/termios.h. There is no obvious reason why these numbers should be
    architecture specific, nor any apparent relationship with the termios
    structure. The total number of these, NR_LDISCS, is defined in linux/tty.h
    anyway. So I propose the following patch which moves the definitions of
    the individual line disciplines to linux/tty.h too.

    Three of these numbers (N_MASC, N_PROFIBUS_FDL, and N_SMSBLOCK) are unused
    in the current kernel, but the patch still keeps the complete set in case
    there are plans to use them yet.

    Signed-off-by: Tilman Schmidt
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tilman Schmidt
     

06 Feb, 2007

12 commits

  • Set read-only flag in the page table entries for the kernel image text
    section. This will catch all instruction caused corruptions withing the
    text section.
    Instruction replacement via kprobes still works, since it bypasses now
    dynamic address translation.

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

    Heiko Carstens
     
  • Hopefully this will make it more maintainable and less error prone.
    Code makes use of search_exception_tables(). Since it calls this
    function before the kernel exeception table is sorted, there is an
    early call to sort_main_extable().

    This way it's easy to use the already present infrastructure of fixup
    sections. Also this would allows to easily convert the rest of
    head[31|64].S into C code.

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

    Heiko Carstens
     
  • Preset the bogomips number to the cpu capacity value reported by
    store system information in SYSIB 1.2.2. This value is constant
    for a particular machine model and can be used to determine
    relative performance differences between machines.

    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     
  • 3592 tape devices are able to write data encrpyted on tape mediums.
    This z/Linux device driver support includes the following functions:
    * ioctl to switch on/off encryption
    * ioctl to query encryption status of drive
    * ioctls to set and query key encrypting keys (kekls)
    * long busy interrupt handling

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

    Michael Holzheu
     
  • Add support to boot from a named saved segment (NSS).

    Signed-off-by: Hongjie Yang
    Signed-off-by: Martin Schwidefsky

    Hongjie Yang
     
  • Starting with the z9 the CPU Cryptographic Assist Facility comes with
    an integrated Pseudo Random Number Generator. The generator creates
    random numbers by an algorithm similar to the ANSI X9.17 standard.
    The pseudo-random numbers can be accessed via a character device driver
    node called /dev/prandom. Similar to /dev/urandom any amount of bytes
    can be read from the device without blocking.

    Signed-off-by: Jan Glauber
    Signed-off-by: Martin Schwidefsky

    Jan Glauber
     
  • This patch adds support for clock synchronization to an external time
    reference (ETR). The external time reference sends an oscillator
    signal and a synchronization signal every 2^20 microseconds to keep
    the TOD clocks of all connected servers in sync. For availability
    two ETR units can be connected to a machine. If the clock deviates
    for more than the sync-check tolerance all cpus get a machine check
    that indicates that the clock is out of sync. For the lovely details
    how to get the clock back in sync see the code below.

    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     
  • This provides a noexec protection on s390 hardware. Our hardware does
    not have any bits left in the pte for a hw noexec bit, so this is a
    different approach using shadow page tables and a special addressing
    mode that allows separate address spaces for code and data.

    As a special feature of our "secondary-space" addressing mode, separate
    page tables can be specified for the translation of data addresses
    (storage operands) and instruction addresses. The shadow page table is
    used for the instruction addresses and the standard page table for the
    data addresses.
    The shadow page table is linked to the standard page table by a pointer
    in page->lru.next of the struct page corresponding to the page that
    contains the standard page table (since page->private is not really
    private with the pte_lock and the page table pages are not in the LRU
    list).
    Depending on the software bits of a pte, it is either inserted into
    both page tables or just into the standard (data) page table. Pages of
    a vma that does not have the VM_EXEC bit set get mapped only in the
    data address space. Any try to execute code on such a page will cause a
    page translation exception. The standard reaction to this is a SIGSEGV
    with two exceptions: the two system call opcodes 0x0a77 (sys_sigreturn)
    and 0x0aad (sys_rt_sigreturn) are allowed. They are stored by the
    kernel to the signal stack frame. Unfortunately, the signal return
    mechanism cannot be modified to use an SA_RESTORER because the
    exception unwinding code depends on the system call opcode stored
    behind the signal stack frame.

    This feature requires that user space is executed in secondary-space
    mode and the kernel in home-space mode, which means that the addressing
    modes need to be switched and that the noexec protection only works
    for user space.
    After switching the addressing modes, we cannot use the mvcp/mvcs
    instructions anymore to copy between kernel and user space. A new
    mvcos instruction has been added to the z9 EC/BC hardware which allows
    to copy between arbitrary address spaces, but on older hardware the
    page tables need to be walked manually.

    Signed-off-by: Gerald Schaefer
    Signed-off-by: Martin Schwidefsky

    Gerald Schaefer
     
  • Currently works anyway since search_binary_handler has a
    set_fs(USER_DS). But start_thread() is the place where this should be
    done. Following all other architectures...

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

    Heiko Carstens
     
  • cpu_relax() has barrier() semantics hence there is no need to use both
    of them in conjunction in sclp_sync_wait(). Also change cpu_relax()
    so it's more obvious that it has barrier semantics.

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

    Heiko Carstens
     
  • No need to use lrag in 64 bit addressing mode since lra will do the
    same.

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

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

    Heiko Carstens
     

12 Jan, 2007

1 commit

  • unionfs managed to hit this on s390. Some architectures use __ptr_t in their
    FD_ZERO implementation. We don't have a __ptr_t. Switch them over to plain
    old void*.

    Cc: Richard Henderson
    Cc: Ivan Kokshaysky
    Cc: Al Viro
    Cc: Paul Mackerras
    Cc: Benjamin Herrenschmidt
    Cc: "Luck, Tony"
    Cc: Martin Schwidefsky
    Cc: Heiko Carstens
    Cc: Josef 'Jeff' Sipek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     

09 Jan, 2007

1 commit