26 Mar, 2009

1 commit


31 Dec, 2008

1 commit

  • The extract cpu time instruction (ectg) instruction allows the user
    process to get the current thread cputime without calling into the
    kernel. The code that uses the instruction needs to switch to the
    access registers mode to get access to the per-cpu info page that
    contains the two base values that are needed to calculate the current
    cputime from the CPU timer with the ectg instruction.

    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     

25 Dec, 2008

2 commits


30 Apr, 2008

2 commits

  • This adds hugetlbfs support on System z, using both hardware large page
    support if available and software large page emulation on older hardware.
    Shared (large) page tables are implemented in software emulation mode,
    by using page->index of the first tail page from a compound large page
    to store page table information.

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

    Gerald Schaefer
     
  • From: Heiko Carstens
    From: Carsten Otte

    This lets us use defines for the magic bits in machine flags instead
    of using plain numbers all over the place.
    In addition on newer machines features/facilities are indicated by the
    result of the stfl instruction. So we use these bits instead of trying
    to execute new instructions and check wether we get an exception or
    not.
    Also the mvpg instruction is always available when in zArch mode,
    whereas the idte instruction is only available in zArch mode. This
    results in some minor optimizations.

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

    Heiko Carstens
     

26 Jan, 2008

1 commit

  • The clear-by-asce operation of the idte instruction gets an asce
    (address-space-control-element) as argument to specify which TLBs
    need to get flushed. The current code passes a plain pointer to
    the start of the pgd without the additional bits which would make
    the pointer an asce. The current machines don't mind the difference
    but a future model might want to use the designation type control
    bits in the asce as a filter for the TLBs to flush.

    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     

27 Apr, 2007

1 commit

  • 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
     

06 Mar, 2007

1 commit

  • Replaced check_user_space() + __check_access_register with the new
    check_space(). The old functions made wrong assumptions about kernel
    and user space when the kernel and user address spaces are switched
    (kernel in home space, user in primary/secondary space).
    Secondly the user process can switch to the accress register mode if
    it is running in primary or secondary mode. In addition it can load
    an arbitrary value to the access registers. If any other value than
    0 for primary space or 1 for secondary space is loaded and memory
    is accessed using the base register related to the access register,
    the program should be terminated with a SIGSEGV. To achieve that the
    DUALD pointer in the DUCT and the PSALD pointer in the PASTE need
    to point to an array of 8 invalid access-list entries to get a
    ALEN-translation exception if an invalid alet is used.

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

    Gerald Schaefer
     

21 Feb, 2007

1 commit

  • With CONFIG_SHARED_KERNEL the kernel text segment that might be in a
    read only memory sections starts at 1MB. Memory between 0x12000 and
    0x100000 is unused then. Free this, so we have appr. an extra MB
    of memory available.

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

    Heiko Carstens
     

06 Feb, 2007

3 commits

  • 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
     
  • Add support to boot from a named saved segment (NSS).

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

    Hongjie Yang
     
  • FCP dump feature detection works only if the sclp command in head.S
    was succesful. Since the sclp command is skipped if diag260 works,
    we don't have any dump feature detection anymore.
    Bug was introduced with d57de5a36791cb1b7285649c62f183b0d3505f7d.

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

    Heiko Carstens
     

09 Jan, 2007

1 commit

  • Fix a memory leak problem in the memory detection routines. A memory leak
    of 128k occurs when we have a contiguous memory with mixed access-mode
    (read or write) ranges.

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

    Hongjie Yang
     

04 Dec, 2006

2 commits

  • VMALLOC_END on 31bit should be 0x8000000UL instead of 0x7fffffffL.
    The page mask which is used to make sure memory_end is on 4MB/2MB
    boundary is wrong and not needed. Therefore remove it.
    Make sure a vmalloc area does also exist and work on (future)
    machines with 4TB and more memory.

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

    Heiko Carstens
     
  • Avoid the tprot loop if diag260 works and reports that there are no
    holes in memory. The tprot instruction can lead to a significant delay
    in the ipl process if the virtual guest has a lot of memory and the
    host is under memory pressure.

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

    Heiko Carstens
     

05 Oct, 2006

1 commit


01 Oct, 2006

1 commit


28 Sep, 2006

1 commit


20 Sep, 2006

4 commits

  • This introduces new user-copy operations which are optimized for
    copying more than 256 Bytes on new hardware.

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

    Gerald Schaefer
     
  • Convert GET_IPL_DEVICE assembler macro to C function.

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

    Heiko Carstens
     
  • It is now possible to specify a ccw/fcp dump device which is used to
    automatically create a system dump in case of a kernel panic. The dump
    device can be configured under /sys/firmware/dump.
    In addition it is now possible to specify a ccw/fcp device which is used
    for the next reboot of Linux. The reipl device can be configured under
    /sys/firmware/reipl.

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

    Michael Holzheu
     
  • Move initrd if the bitmap of the bootmem allocator would overwrite it.
    In addition this patch sets the default size and address of the initrd to 0.
    Therefore all boot loaders must set the initrd size and address correctly.
    This is especially relevant for ftp boot via HMC/SE, where this change
    requires a special patch file entry in the .ins file which sets these two
    values contained at address 0x10408 and 0x10410.

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

    Heiko Carstens
     

18 Jul, 2006

1 commit


29 Jun, 2006

2 commits

  • There is almost no room left for any new code between 0x10000
    and 0x10480. Move the code from 0x10000 to 0x11000.

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

    Heiko Carstens
     
  • The wrong base register is used to read a value from the sclp data
    structure. The value is used to calculate the memory size.
    Use correct register %r4.

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

    Heiko Carstens
     

07 Nov, 2005

2 commits

  • Merge common parts of head.S and head64.S into head.S and move architecture
    specific parts to head31.S and head64.S respectively. Saves us ~500 lines
    of duplicated assembly code.

    Acked-by: Martin Schwidefsky
    Signed-off-by: Heiko Carstens
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Heiko Carstens
     
  • Don't switch back to 24 bit addressing mode when waiting for an external
    interrupt and set the correct bit in wait PSW (external mask instead of I/O
    mask).

    Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Heiko Carstens
     

31 Oct, 2005

1 commit

  • Sysfs interface to export ipl device parameters. Dependent on the ipl type
    the interface will look like this:

    - ccw ipl:

    /sys/firmware/ipl/device
    /ipl_type

    - fcp ipl:

    /sys/firmware/ipl/binary_parameter
    /bootprog
    /br_lba
    /device
    /ipl_type
    /lun
    /scp_data
    /wwpn

    - otherwise (unknown that is):

    /sys/firmware/ipl/ipl_type

    Acked-by: Martin Schwidefsky
    Signed-off-by: Heiko Carstens
    Cc: Greg KH
    Signed-off-by: Heiko Carstens
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Heiko Carstens
     

10 Sep, 2005

1 commit


30 Jul, 2005

1 commit

  • The patch that introduced waiting for interrupts after resetting the reader
    can cause the boot to fail because the system is waiting for an interrupt that
    will never arrive. Add code to check if an interrupt is supposed to arrive
    before waiting endlessly.

    Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Heiko Carstens
     

28 Jul, 2005

2 commits

  • The kernel uses the SIGP external call order code to signal other CPUs. When
    running with dedicated CPUs external calls don't get delivered immediately but
    within a fixed polling invervall. This can lead to delays where the system
    appears to do nothing. Replace the SIGP external call order with the SIGP
    emergency call order since this one gets delivered immediately.

    Signed-off-by: Martin Schwidefsky
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Heiko Carstens
     
  • Split spin lock and r/w lock implementation into a single try which is done
    inline and an out of line function that repeatedly tries to get the lock
    before doing the cpu_relax(). Add a system control to set the number of
    retries before a cpu is yielded.

    The reason for the spin lock retry is that the diagnose 0x44 that is used to
    give up the virtual cpu is quite expensive. For spin locks that are held only
    for a short period of time the costs of the diagnoses outweights the savings
    for spin locks that are held for a longer timer. The default retry count is
    1000.

    Signed-off-by: Martin Schwidefsky
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Martin Schwidefsky
     

22 Jun, 2005

2 commits

  • Wait for interrupt and clear status pending after resetting the reader.

    Signed-off-by: Martin Schwidefsky
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Heiko Carstens
     
  • The kernel takes a very long time to boot if the memory size is bigger then
    32767 MB. The memory size is contained in a structure created by an sclp
    call. The kernel accesses the field with a LH instrution which performs a
    sign extension of a 16 bit word. In the case of a memory size with bit 2^15
    set this results in a very large value and the memory detection just loops for
    a long time. In addition if more then 64 GB are used on a 64 bit system the
    memory size is read from an incorrect storage location.

    Use zero-extention to read the 16 bit memory size and the correct offset to
    read the 4 byte memory size on 64 bit.

    Signed-off-by: Martin Schwidefsky
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Heiko Carstens
     

17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds