1. 24 Jul, 2011 8 commits
    • Martin Schwidefsky's avatar
      [S390] kvm guest address space mapping · e5992f2e
      Martin Schwidefsky authored
      Add code that allows KVM to control the virtual memory layout that
      is seen by a guest. The guest address space uses a second page table
      that shares the last level pte-tables with the process page table.
      If a page is unmapped from the process page table it is automatically
      unmapped from the guest page table as well.
      
      The guest address space mapping starts out empty, KVM can map any
      individual 1MB segments from the process virtual memory to any 1MB
      aligned location in the guest virtual memory. If a target segment in
      the process virtual memory does not exist or is unmapped while a
      guest mapping exists the desired target address is stored as an
      invalid segment table entry in the guest page table.
      The population of the guest page table is fault driven.
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      e5992f2e
    • Jan Glauber's avatar
      [S390] fix s390 assembler code alignments · 144d634a
      Jan Glauber authored
      The alignment is missing for various global symbols in s390 assembly code.
      With a recent gcc and an instruction like stgrl this can lead to a
      specification exception if the instruction uses such a mis-aligned address.
      
      Specify the alignment explicitely and while add it define __ALIGN for s390
      and use the ENTRY define to save some lines of code.
      Signed-off-by: default avatarJan Glauber <jang@linux.vnet.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      144d634a
    • Martin Schwidefsky's avatar
      [S390] move sie code to entry.S · 603d1a50
      Martin Schwidefsky authored
      The entry to / exit from sie has subtle dependencies to the first level
      interrupt handler. Move the sie assembler code to entry64.S and replace
      the SIE_HOOK callback with a test and the new _TIF_SIE bit.
      In addition this patch fixes several problems in regard to the check for
      the_TIF_EXIT_SIE bits. The old code checked the TIF bits before executing
      the interrupt handler and it only modified the instruction address if it
      pointed directly to the sie instruction. In both cases it could miss
      a TIF bit that normally would cause an exit from the guest and would
      reenter the guest context.
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      603d1a50
    • Christian Borntraeger's avatar
      [S390] kvm: handle tprot intercepts · bb25b9ba
      Christian Borntraeger authored
      When running a kvm guest we can get intercepts for tprot, if the host
      page table is read-only or not populated. This patch implements the
      most common case (linux memory detection).
      This also allows host copy on write for guest memory on newer systems.
      Signed-off-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      bb25b9ba
    • Jan Glauber's avatar
      [S390] qdio: clear shared DSCI before scheduling the queue handler · b02f0c2e
      Jan Glauber authored
      The following race can occur with qdio devices that use the shared device
      state change indicator:
      
      Device (Shared DSCI)    CPU0                            CPU1
      ===============================================================================
      
      1. DSCI 0 => 1,
         INT pending
                              2. Thinint handler
                              * si_used = 1
                              * Inbound tasklet_schedule
                              * DSCI 1 => 0
      
      3. DSCI 0 => 1,
         INT pending
      
                                                              4. Thinint handler
                                                              * si_used = 1
                                                              * Inbound tasklet_schedu
      le
                                                                 => NOP
      
                              5. Inbound tasklet run
      
      6. DSCI = 1,
         INT surpressed
      
                                                              7. DSCI 1 => 0
      
      The race would lead to a stall where new data in the input queue is
      not recognized so the device stops working in case of no further traffic.
      
      Fix the race by resetting the DSCI before scheduling the inbound tasklet
      so the device generates an interrupt if new data arrives in the above
      scenario in step 6.
      Reviewed-by: default avatarUrsula Braun <ursula.braun@de.ibm.com>
      Signed-off-by: default avatarJan Glauber <jang@linux.vnet.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      b02f0c2e
    • Martin Schwidefsky's avatar
      [S390] reference bit testing for unmapped pages · 50a15981
      Martin Schwidefsky authored
      On x86 a page without a mapper is by definition not referenced / old.
      The s390 architecture keeps the reference bit in the storage key and
      the current code will check the storage key for page without a mapper.
      This leads to an interesting effect: the first time an s390 system
      needs to write pages to swap it only finds referenced pages. This
      causes a lot of pages to get added and written to the swap device.
      To avoid this behaviour change page_referenced to query the storage
      key only if there is a mapper of the page.
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      50a15981
    • Steven Rostedt's avatar
      [S390] irqs: Do not trace arch_local_{*,irq_*} functions · f433c4ae
      Steven Rostedt authored
      Do not trace arch_local_save_flags(), arch_local_irq_*() and friends.
      Although they are marked inline, gcc may still make a function out of
      them and add it to the pool of functions that are traced by the function
      tracer. This can cause undesirable results (kernel panic, triple faults,
      etc).
      
      Add the notrace notation to prevent them from ever being traced.
      
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      f433c4ae
    • Martin Schwidefsky's avatar
      [S390] kconfig: remove tape interface support comment · 284ecb00
      Martin Schwidefsky authored
      There is nothing below the menu entry "S/390 tape interface support".
      Remove it.
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      284ecb00
  2. 23 Jul, 2011 32 commits