]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge branch 'for-upstream' of http://github.com/agraf/linux-2.6 into queue
authorMarcelo Tosatti <mtosatti@redhat.com>
Wed, 10 Oct 2012 22:03:54 +0000 (19:03 -0300)
committerMarcelo Tosatti <mtosatti@redhat.com>
Wed, 10 Oct 2012 22:03:54 +0000 (19:03 -0300)
* 'for-upstream' of http://github.com/agraf/linux-2.6: (56 commits)
  arch/powerpc/kvm/e500_tlb.c: fix error return code
  KVM: PPC: Book3S HV: Provide a way for userspace to get/set per-vCPU areas
  KVM: PPC: Book3S: Get/set guest FP regs using the GET/SET_ONE_REG interface
  KVM: PPC: Book3S: Get/set guest SPRs using the GET/SET_ONE_REG interface
  KVM: PPC: set IN_GUEST_MODE before checking requests
  KVM: PPC: e500: MMU API: fix leak of shared_tlb_pages
  KVM: PPC: e500: fix allocation size error on g2h_tlb1_map
  KVM: PPC: Book3S HV: Fix calculation of guest phys address for MMIO emulation
  KVM: PPC: Book3S HV: Remove bogus update of physical thread IDs
  KVM: PPC: Book3S HV: Fix updates of vcpu->cpu
  KVM: Move some PPC ioctl definitions to the correct place
  KVM: PPC: Book3S HV: Handle memory slot deletion and modification correctly
  KVM: PPC: Move kvm->arch.slot_phys into memslot.arch
  KVM: PPC: Book3S HV: Take the SRCU read lock before looking up memslots
  KVM: PPC: bookehv: Allow duplicate calls of DO_KVM macro
  KVM: PPC: BookE: Support FPU on non-hv systems
  KVM: PPC: 440: Implement mfdcrx
  KVM: PPC: 440: Implement mtdcrx
  Document IACx/DACx registers access using ONE_REG API
  KVM: PPC: E500: Remove E500_TLB_DIRTY flag
  ...

1  2 
Documentation/virtual/kvm/api.txt
arch/powerpc/sysdev/fsl_msi.c
drivers/tty/Kconfig
include/linux/kvm_host.h

index a46a416810fbb925997c46ae4f141def7e4096a7,e726d76eeebbe15e40422a4ad28256d5fb54dac0..4258180b1ecd2825d22d19d1f1a9d1b56b8d1a8d
@@@ -1194,12 -1194,15 +1194,15 @@@ struct kvm_ppc_pvinfo 
  This ioctl fetches PV specific information that need to be passed to the guest
  using the device tree or other means from vm context.
  
- For now the only implemented piece of information distributed here is an array
- of 4 instructions that make up a hypercall.
+ The hcall array defines 4 instructions that make up a hypercall.
  
  If any additional field gets added to this structure later on, a bit for that
  additional piece of information will be set in the flags bitmap.
  
+ The flags bitmap is defined as:
+    /* the host supports the ePAPR idle hcall
+    #define KVM_PPC_PVINFO_FLAGS_EV_IDLE   (1<<0)
  
  4.48 KVM_ASSIGN_PCI_DEVICE
  
@@@ -1731,7 -1734,45 +1734,45 @@@ registers, find a list below
    Arch  |       Register        | Width (bits)
          |                       |
    PPC   | KVM_REG_PPC_HIOR      | 64
+   PPC   | KVM_REG_PPC_IAC1      | 64
+   PPC   | KVM_REG_PPC_IAC2      | 64
+   PPC   | KVM_REG_PPC_IAC3      | 64
+   PPC   | KVM_REG_PPC_IAC4      | 64
+   PPC   | KVM_REG_PPC_DAC1      | 64
+   PPC   | KVM_REG_PPC_DAC2      | 64
+   PPC   | KVM_REG_PPC_DABR      | 64
+   PPC   | KVM_REG_PPC_DSCR      | 64
+   PPC   | KVM_REG_PPC_PURR      | 64
+   PPC   | KVM_REG_PPC_SPURR     | 64
+   PPC   | KVM_REG_PPC_DAR       | 64
+   PPC   | KVM_REG_PPC_DSISR     | 32
+   PPC   | KVM_REG_PPC_AMR       | 64
+   PPC   | KVM_REG_PPC_UAMOR     | 64
+   PPC   | KVM_REG_PPC_MMCR0     | 64
+   PPC   | KVM_REG_PPC_MMCR1     | 64
+   PPC   | KVM_REG_PPC_MMCRA     | 64
+   PPC   | KVM_REG_PPC_PMC1      | 32
+   PPC   | KVM_REG_PPC_PMC2      | 32
+   PPC   | KVM_REG_PPC_PMC3      | 32
+   PPC   | KVM_REG_PPC_PMC4      | 32
+   PPC   | KVM_REG_PPC_PMC5      | 32
+   PPC   | KVM_REG_PPC_PMC6      | 32
+   PPC   | KVM_REG_PPC_PMC7      | 32
+   PPC   | KVM_REG_PPC_PMC8      | 32
+   PPC   | KVM_REG_PPC_FPR0      | 64
+           ...
+   PPC   | KVM_REG_PPC_FPR31     | 64
+   PPC   | KVM_REG_PPC_VR0       | 128
+           ...
+   PPC   | KVM_REG_PPC_VR31      | 128
+   PPC   | KVM_REG_PPC_VSR0      | 128
+           ...
+   PPC   | KVM_REG_PPC_VSR31     | 128
+   PPC   | KVM_REG_PPC_FPSCR     | 64
+   PPC   | KVM_REG_PPC_VSCR      | 32
+   PPC   | KVM_REG_PPC_VPA_ADDR  | 64
+   PPC   | KVM_REG_PPC_VPA_SLB   | 128
+   PPC   | KVM_REG_PPC_VPA_DTL   | 128
  
  4.69 KVM_GET_ONE_REG
  
@@@ -1747,7 -1788,7 +1788,7 @@@ kvm_one_reg struct passed in. On succes
  at the memory location pointed to by "addr".
  
  The list of registers accessible using this interface is identical to the
- list in 4.64.
+ list in 4.68.
  
  
  4.70 KVM_KVMCLOCK_CTRL
@@@ -1997,39 -2038,6 +2038,39 @@@ return the hash table order in the para
  the virtualized real-mode area (VRMA) facility, the kernel will
  re-create the VMRA HPTEs on the next KVM_RUN of any vcpu.)
  
 +4.77 KVM_S390_INTERRUPT
 +
 +Capability: basic
 +Architectures: s390
 +Type: vm ioctl, vcpu ioctl
 +Parameters: struct kvm_s390_interrupt (in)
 +Returns: 0 on success, -1 on error
 +
 +Allows to inject an interrupt to the guest. Interrupts can be floating
 +(vm ioctl) or per cpu (vcpu ioctl), depending on the interrupt type.
 +
 +Interrupt parameters are passed via kvm_s390_interrupt:
 +
 +struct kvm_s390_interrupt {
 +      __u32 type;
 +      __u32 parm;
 +      __u64 parm64;
 +};
 +
 +type can be one of the following:
 +
 +KVM_S390_SIGP_STOP (vcpu) - sigp restart
 +KVM_S390_PROGRAM_INT (vcpu) - program check; code in parm
 +KVM_S390_SIGP_SET_PREFIX (vcpu) - sigp set prefix; prefix address in parm
 +KVM_S390_RESTART (vcpu) - restart
 +KVM_S390_INT_VIRTIO (vm) - virtio external interrupt; external interrupt
 +                         parameters in parm and parm64
 +KVM_S390_INT_SERVICE (vm) - sclp external interrupt; sclp parameter in parm
 +KVM_S390_INT_EMERGENCY (vcpu) - sigp emergency; source cpu in parm
 +KVM_S390_INT_EXTERNAL_CALL (vcpu) - sigp external call; source cpu in parm
 +
 +Note that the vcpu ioctl is asynchronous to vcpu execution.
 +
  
  5. The kvm_run structure
  ------------------------
index 51ffafae561ea5a4a12da1f401c76da164811fff,7e2b2f2e3ecde13f9e95c88801297d09c49a2583..63c5f04ea580177649aba38d101cb3f86b40cb35
@@@ -236,7 -236,6 +236,6 @@@ static void fsl_msi_cascade(unsigned in
        u32 intr_index;
        u32 have_shift = 0;
        struct fsl_msi_cascade_data *cascade_data;
-       unsigned int ret;
  
        cascade_data = irq_get_handler_data(irq);
        msi_data = cascade_data->msi_data;
        case FSL_PIC_IP_IPIC:
                msir_value = fsl_msi_read(msi_data->msi_regs, msir_index * 0x4);
                break;
-       case FSL_PIC_IP_VMPIC:
+ #ifdef CONFIG_EPAPR_PARAVIRT
+       case FSL_PIC_IP_VMPIC: {
+               unsigned int ret;
                ret = fh_vmpic_get_msir(virq_to_hw(irq), &msir_value);
                if (ret) {
                        pr_err("fsl-msi: fh_vmpic_get_msir() failed for "
                }
                break;
        }
+ #endif
+       }
  
        while (msir_value) {
                intr_index = ffs(msir_value) - 1;
@@@ -368,7 -371,7 +371,7 @@@ static int __devinit fsl_of_msi_probe(s
        int err, i, j, irq_index, count;
        int rc;
        const u32 *p;
 -      struct fsl_msi_feature *features;
 +      const struct fsl_msi_feature *features;
        int len;
        u32 offset;
        static const u32 all_avail[] = { 0, NR_MSI_IRQS };
@@@ -502,16 -505,18 +505,18 @@@ static const struct fsl_msi_feature vmp
  static const struct of_device_id fsl_of_msi_ids[] = {
        {
                .compatible = "fsl,mpic-msi",
 -              .data = (void *)&mpic_msi_feature,
 +              .data = &mpic_msi_feature,
        },
        {
                .compatible = "fsl,ipic-msi",
 -              .data = (void *)&ipic_msi_feature,
 +              .data = &ipic_msi_feature,
        },
+ #ifdef CONFIG_EPAPR_PARAVIRT
        {
                .compatible = "fsl,vmpic-msi",
 -              .data = (void *)&vmpic_msi_feature,
 +              .data = &vmpic_msi_feature,
        },
+ #endif
        {}
  };
  
diff --combined drivers/tty/Kconfig
index d8e05eeab23213e503381422735f59fe7240281c,aa99cd26ba8bc4c6ff7ab89e8ecf3357dc4f19a6..0ecf22b6a38e5c61a9d42670435ac60939ce82c4
@@@ -214,8 -214,8 +214,8 @@@ config CYCLADE
          If you haven't heard about it, it's safe to say N.
  
  config CYZ_INTR
 -      bool "Cyclades-Z interrupt mode operation (EXPERIMENTAL)"
 -      depends on EXPERIMENTAL && CYCLADES
 +      bool "Cyclades-Z interrupt mode operation"
 +      depends on CYCLADES
        help
          The Cyclades-Z family of multiport cards allows 2 (two) driver op
          modes: polling and interrupt. In polling mode, the driver will check
@@@ -285,7 -285,7 +285,7 @@@ config SYNCLINK_G
  
  config NOZOMI
        tristate "HSDPA Broadband Wireless Data Card - Globe Trotter"
 -      depends on PCI && EXPERIMENTAL
 +      depends on PCI
        help
          If you have a HSDPA driver Broadband Wireless Data Card -
          Globe Trotter PCMCIA card, say Y here.
          will be called nozomi.
  
  config ISI
 -      tristate "Multi-Tech multiport card support (EXPERIMENTAL)"
 +      tristate "Multi-Tech multiport card support"
        depends on SERIAL_NONSTANDARD && PCI
        select FW_LOADER
        help
@@@ -317,6 -317,7 +317,6 @@@ config N_HDL
  
  config N_GSM
        tristate "GSM MUX line discipline support (EXPERIMENTAL)"
 -      depends on EXPERIMENTAL
        depends on NET
        help
          This line discipline provides support for the GSM MUX protocol and
@@@ -357,6 -358,7 +357,7 @@@ config TRACE_SIN
  config PPC_EPAPR_HV_BYTECHAN
        tristate "ePAPR hypervisor byte channel driver"
        depends on PPC
+       select EPAPR_PARAVIRT
        help
          This driver creates /dev entries for each ePAPR hypervisor byte
          channel, thereby allowing applications to communicate with byte
diff --combined include/linux/kvm_host.h
index c35b1c08c004b54ca770b278468c1ba003161dde,0ca3663206f8191e725d4a8f2b1502dbbf18fbd7..6afc5be2615efa5f6312ce6a9ec3d30dbdf87031
@@@ -118,6 -118,7 +118,7 @@@ static inline bool is_error_page(struc
  #define KVM_REQ_IMMEDIATE_EXIT    15
  #define KVM_REQ_PMU               16
  #define KVM_REQ_PMI               17
+ #define KVM_REQ_WATCHDOG          18
  
  #define KVM_USERSPACE_IRQ_SOURCE_ID           0
  #define KVM_IRQFD_RESAMPLE_IRQ_SOURCE_ID      1
@@@ -582,6 -583,7 +583,6 @@@ struct kvm_vcpu *kvm_arch_vcpu_create(s
  int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu);
  void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu);
  
 -int kvm_arch_vcpu_reset(struct kvm_vcpu *vcpu);
  int kvm_arch_hardware_enable(void *garbage);
  void kvm_arch_hardware_disable(void *garbage);
  int kvm_arch_hardware_setup(void);
@@@ -736,7 -738,7 +737,7 @@@ static inline int kvm_deassign_device(s
  static inline void kvm_guest_enter(void)
  {
        BUG_ON(preemptible());
 -      account_system_vtime(current);
 +      vtime_account(current);
        current->flags |= PF_VCPU;
        /* KVM does not hold any references to rcu protected data when it
         * switches CPU into a guest mode. In fact switching to a guest mode
  
  static inline void kvm_guest_exit(void)
  {
 -      account_system_vtime(current);
 +      vtime_account(current);
        current->flags &= ~PF_VCPU;
  }