public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
* [GIT PULL] KVM changes for 4.8 merge window
@ 2016-08-02 12:37 Paolo Bonzini
  2016-08-02 18:02 ` Christian Borntraeger
  2016-08-03  3:21 ` Michael Ellerman
  0 siblings, 2 replies; 12+ messages in thread
From: Paolo Bonzini @ 2016-08-02 12:37 UTC (permalink / raw)
  To: torvalds
  Cc: linux-kernel, rkrcmar, kvm, Christian Borntraeger,
	Christoffer Dall, Dan Williams, Marc Zyngier, Paul Mackerras,
	Michael Ellerman

Linus,

The following changes since commit 6df82a7b88dc9b0b519765562b005ef9196d812a:

  MIPS: KVM: Fix CACHE triggered exception emulation (2016-06-14 10:59:45 +0200)

are available in the git repository at:

  git://git.kernel.org/pub/scm/virt/kvm/kvm.git tags/for-linus

for you to fetch changes up to 23528bb21ee2c9b27f3feddd77a2a3351a8df148:

  KVM: PPC: Introduce KVM_CAP_PPC_HTM (2016-08-01 19:42:06 +0200)

----------------------------------------------------------------
- ARM: GICv3 ITS emulation and various fixes.  Removal of the old
VGIC implementation.

- s390: support for trapping software breakpoints, nested virtualization
(vSIE), the STHYI opcode, initial extensions for CPU model support.

- MIPS: support for MIPS64 hosts (32-bit guests only) and lots of cleanups,
preliminary to this and the upcoming support for hardware virtualization
extensions.

- x86: support for execute-only mappings in nested EPT; reduced vmexit
latency for TSC deadline timer (by about 30%) on Intel hosts; support for
more than 255 vCPUs.

- PPC: bugfixes.

The ugly bit is the conflicts.  A couple of them are simple conflicts due
to 4.7 fixes, but most of them are with other trees. There was definitely
too much reliance on Acked-by here.  Some conflicts are for KVM patches
where _I_ gave my Acked-by, but the worst are for this pull request's
patches that touch files outside arch/*/kvm.  KVM submaintainers should
probably learn to synchronize better with arch maintainers, with the
latter providing topic branches whenever possible instead of Acked-by.
This is what we do with arch/x86.  And I should learn to refuse pull
requests when linux-next sends scary signals, even if that means that
submaintainers have to rebase their branches.

Anyhow, here's the list:

- arch/x86/kvm/vmx.c: handle_pcommit and EXIT_REASON_PCOMMIT was removed
by the nvdimm tree.  This tree adds handle_preemption_timer and
EXIT_REASON_PREEMPTION_TIMER at the same place.  In general all mentions
of pcommit have to go.

There is also a conflict between a stable fix and this patch, where the
stable fix removed the vmx_create_pml_buffer function and its call.

- virt/kvm/kvm_main.c: kvm_cpu_notifier was removed by the hotplug tree.
This tree adds kvm_io_bus_get_dev at the same place.

- virt/kvm/arm/vgic.c: a few final bugfixes went into 4.7 before the
file was completely removed for 4.8.

- include/linux/irqchip/arm-gic-v3.h: this one is entirely our fault;
this is a change that should have gone in through the irqchip tree and
pulled by kvm-arm.  I think I would have rejected this kvm-arm pull
request.  The KVM version is the right one, except that it lacks
GITS_BASER_PAGES_SHIFT.

- arch/powerpc: what a mess.  For the idle_book3s.S conflict, the KVM
tree is the right one; everything else is trivial.  In this case I am
not quite sure what went wrong.  The commit that is causing the mess
(fd7bacbca47a, "KVM: PPC: Book3S HV: Fix TB corruption in guest exit
path on HMI interrupt", 2016-05-15) touches both arch/powerpc/kernel/
and arch/powerpc/kvm/.  It's large, but at 396 insertions/5 deletions
I guessed that it wasn't really possible to split it and that the 5
deletions wouldn't conflict.  That wasn't the case.

- arch/s390: also messy.  First is hypfs_diag.c where the KVM tree
moved some code and the s390 tree patched it.  You have to reapply the
relevant part of commits 6c22c9863760, plus all of e030c1125eab, to
arch/s390/kernel/diag.c.  Or pick the linux-next conflict
resolution from http://marc.info/?l=kvm&m=146717549531603&w=2.
Second, there is a conflict in gmap.c between a stable fix and 4.8.
The KVM version here is the correct one.

I have pushed my resolution at refs/heads/merge-20160802 (commit
3d1f53419842) at git://git.kernel.org/pub/scm/virt/kvm/kvm.git.

----------------------------------------------------------------
Alexander Yarygin (1):
      KVM: s390: Add mnemonic print to kvm_s390_intercept_prog

Andre Przywara (17):
      KVM: arm/arm64: vgic: Move redistributor kvm_io_devices
      KVM: arm/arm64: vgic: Check return value for kvm_register_vgic_device
      KVM: Extend struct kvm_msi to hold a 32-bit device ID
      KVM: arm/arm64: Extend arch CAP checks to allow per-VM capabilities
      KVM: kvm_io_bus: Add kvm_io_bus_get_dev() call
      KVM: arm/arm64: vgic: Add refcounting for IRQs
      irqchip/gic-v3: Refactor and add GICv3 definitions
      KVM: arm64: vgic: Handle ITS related GICv3 redistributor registers
      KVM: arm64: vgic-its: Introduce ITS emulation file with MMIO framework
      KVM: arm64: vgic-its: Introduce new KVM ITS device
      KVM: arm64: vgic-its: Implement basic ITS register handlers
      KVM: arm64: vgic-its: Connect LPIs to the VGIC emulation
      KVM: arm64: vgic-its: Read initial LPI pending table
      KVM: arm64: vgic-its: Allow updates of LPI configuration table
      KVM: arm64: vgic-its: Implement ITS command queue command handlers
      KVM: arm64: vgic-its: Implement MSI injection in ITS emulation
      KVM: arm64: vgic-its: Enable ITS emulation as a virtual MSI controller

Andrea Gelmini (4):
      KVM: ARM: Fix typos
      KVM: ARM64: Fix typos
      KVM: S390: Fix typo
      KVM: x86: Fix typos

Arnd Bergmann (1):
      kvm: x86: use getboottime64

Ashok Raj (1):
      KVM: VMX: enable guest access to LMCE related MSRs

Bandan Das (5):
      kvm: mmu: extend the is_present check to 32 bits
      kvm: mmu: remove is_present_gpte()
      kvm: mmu: don't set the present bit unconditionally
      kvm: mmu: track read permission explicitly for shadow EPT page tables
      kvm: vmx: advertise support for ept execute only

Borislav Petkov (1):
      x86/kvm/svm: Simplify cpu_has_svm()

Christian Borntraeger (2):
      KVM: s390: provide logging for diagnose 0x500
      KVM: s390: fixup I/O interrupt traces

Dan Carpenter (1):
      arm64: KVM: Clean up a condition

David Hildenbrand (89):
      KVM: s390: interface to query and configure cpu features
      KVM: s390: forward ESOP if available
      KVM: s390: gaccess: store guest address on ALC prot exceptions
      KVM: s390: gaccess: function for preparing translation exceptions
      KVM: s390: gaccess: convert kvm_s390_check_low_addr_prot_real()
      KVM: s390: gaccess: convert guest_translate_address()
      KVM: s390: gaccess: convert guest_page_range()
      KVM: s390: gaccess: convert get_vcpu_asce()
      s390/crypto: allow to query all known cpacf functions
      KVM: s390: interface to query and configure cpu subfunctions
      s390/sclp: detect 64-bit-SCAO facility
      KVM: s390: handle missing 64-bit-SCAO facility
      s390/sclp: detect guest-PER enhancement
      KVM: s390: guestdbg: signal missing hardware support
      s390/sclp: detect cmma
      KVM: s390: enable CMMA if the interpration is available
      KVM: s390: provide CMMA attributes only if available
      s390/sclp: detect guest-storage-limit-suppression
      KVM: s390: handle missing guest-storage-limit-suppression
      s390/sclp: detect intervention bypass facility
      KVM: s390: enable ib only if available
      s390/sclp: detect conditional-external-interception facility
      KVM: s390: enable cei only if available
      s390/sclp: detect PFMF interpretation facility
      KVM: s390: enable PFMFI only if available
      s390/sclp: detect interlock-and-broadcast-suppression facility
      KVM: s390: enable ibs only if available
      KVM: s390: enable host-protection-interruption only with ESOP
      KVM: s390: turn on tx even without ctx
      s390/mm: don't drop errors in get_guest_storage_key
      s390/mm: simplify get_guest_storage_key
      s390/mm: return key via pointer in get_guest_storage_key
      KVM: s390: storage keys fit into a char
      KVM: s390: pfmf: fix end address calculation
      KVM: s390: pfmf: MR and MC are ignored without CSSKE
      KVM: s390: pfmf: take care of amode when setting reg2
      KVM: s390: pfmf: support conditional-sske facility
      KVM: s390: pfmf: handle address overflows
      s390/sclp: detect storage-key facility
      KVM: s390: trace and count all skey intercepts
      KVM: s390: handle missing storage-key facility
      s390/mm: flush tlb of shadows in all situations
      s390/mm: shadow pages with real guest requested protection
      s390/mm: avoid races on region/segment/page table shadowing
      s390/mm: fix races on gmap_shadow creation
      s390/mm: take the mmap_sem in kvm_s390_shadow_fault()
      s390/mm: protection exceptions are corrrectly shadowed
      s390/mm: take ipte_lock during shadow faults
      s390/mm: push ste protection down to shadow pte
      s390/mm: prepare for EDAT1/EDAT2 support in gmap shadow
      s390/mm: support EDAT1 for gmap shadows
      s390/mm: support EDAT2 for gmap shadows
      s390/mm: push rte protection down to shadow pte
      s390/mm: support real-space for gmap shadows
      s390/mm: limit number of real-space gmap shadows
      s390/mm: remember the int code for the last gmap fault
      s390/mm: allow to check if a gmap shadow is valid
      s390/mm: don't fault everything in read-write in gmap_pte_op_fixup()
      KVM: s390: fast path for shadow gmaps in gmap notifier
      KVM: s390: backup the currently enabled gmap when scheduled out
      s390: introduce page_to_virt() and pfn_to_virt()
      mm/page_ref: introduce page_ref_inc_return
      KVM: s390: vsie: initial support for nested virtualization
      KVM: s390: vsie: optimize gmap prefix mapping
      KVM: s390: vsie: support setting the ibc
      KVM: s390: vsie: support edat1 / edat2
      KVM: s390: vsie: support host-protection-interruption
      KVM: s390: vsie: support STFLE interpretation
      KVM: s390: vsie: support aes dea wrapping keys
      KVM: s390: vsie: support transactional execution
      KVM: s390: vsie: support vectory facility (SIMD)
      KVM: s390: vsie: support run-time-instrumentation
      KVM: s390: vsie: support 64-bit-SCAO
      KVM: s390: vsie: support shared IPTE-interlock facility
      KVM: s390: vsie: support guest-PER-enhancement
      KVM: s390: vsie: support guest-storage-limit-suppression
      KVM: s390: vsie: support intervention-bypass
      KVM: s390: vsie: support conditional-external-interception
      KVM: s390: vsie: support IBS interpretation
      KVM: s390: vsie: try to refault after a reported fault to g2
      KVM: s390: vsie: speed up VCPU irq delivery when handling vsie
      KVM: s390: don't use CPUSTAT_WAIT to detect if a VCPU is idle
      KVM: s390: vsie: speed up VCPU external calls
      KVM: s390: vsie: correctly set and handle guest TOD
      KVM: s390: vsie: add indication for future features
      KVM: s390: vsie: add module parameter "nested"
      KVM: s390: inject PER i-fetch events on applicable icpts
      KVM: s390: allow user space to handle instr 0x0000
      KVM: s390: let ptff intercepts result in cc=3

David Matlack (1):
      kvm: x86: nVMX: maintain internal copy of current VMCS

Eric Auger (1):
      KVM: arm/arm64: Fix vGICv2 KVM_DEV_ARM_VGIC_GRP_CPU/DIST_REGS

Haozhong Zhang (2):
      KVM: VMX: move msr_ia32_feature_control to vcpu_vmx
      KVM: VMX: validate individual bits of guest MSR_IA32_FEATURE_CONTROL

James Hogan (77):
      MIPS: KVM: Drop unused guest_inst from kvm_vcpu_arch
      MIPS: KVM: Drop unused host_cp0_entryhi
      MIPS: KVM: Drop unused kvm_mips_sync_icache()
      MIPS: KVM: Convert headers to kernel sized types
      MIPS: KVM: Convert code to kernel sized types
      MIPS: KVM: Make various Cause variables 32-bit
      MIPS: KVM: Move non-TLB handling code out of tlb.c
      MIPS: KVM: Don't indirect KVM functions
      MIPS: KVM: Simplify even/odd TLB handling
      MIPS: KVM: Drop unused hpa0/hpa1 args from function
      MIPS: KVM: Restore host EBase from ebase variable
      MIPS: KVM: Clean up TLB management hazards
      MIPS: KVM: Use dump_tlb_all() for kvm_mips_dump_host_tlbs()
      MIPS: KVM: Arrayify struct kvm_mips_tlb::tlb_lo*
      MIPS: KVM: Simplify TLB_* macros
      MIPS: KVM: Use MIPS_ENTRYLO_* defs from mipsregs.h
      MIPS: KVM: Combine handle_tlb_ld/st_miss
      MIPS: KVM: Use va in kvm_get_inst()
      MIPS: KVM: Generalise fpu_inuse for other state
      MIPS: KVM: Add kvm_aux trace event
      MIPS: KVM: Clean up kvm_exit trace event
      MIPS: KVM: Add kvm_asid_change trace event
      MIPS: KVM: Add guest mode switch trace events
      MIPS: KVM: Trace guest register access emulation
      MIPS: KVM: Dump guest tlbs if kvm_get_inst() fails
      MIPS: KVM: Print unknown load/store encodings
      MIPS: KVM: Fix translation of MFC0 ErrCtl
      MIPS: KVM: Factor writing of translated guest instructions
      MIPS: KVM: Convert emulation to use asm/inst.h
      MIPS: KVM: Pass all unknown registers to callbacks
      MIPS: KVM: Make KVM_GET_REG_LIST dynamic
      MIPS: KVM: Use raw_cpu_has_fpu in kvm_mips_guest_can_have_fpu()
      MIPS: KVM: List FPU/MSA registers
      MIPS: Clean up RDHWR handling
      MIPS: KVM: Don't hardcode restored HWREna
      MIPS: KVM: Allow ULRI to restrict UserLocal register
      MIPS: KVM: Emulate RDHWR CPUNum register
      MIPS: KVM: Add KScratch registers
      MIPS: KVM: Move commpage so 0x0 is unmapped
      MIPS: KVM: Use host CCA for TLB mappings
      MIPS: Add define for Config.VI (virtual icache) bit
      MIPS: KVM: Report more accurate CP0_Config fields to guest
      MIPS: KVM: Use mipsregs.h defs for config registers
      MIPS: KVM: Combine entry trace events into class
      MIPS: uasm: Add CFC1/CTC1 instructions
      MIPS: uasm: Add CFCMSA/CTCMSA instructions
      MIPS: uasm: Add DI instruction
      MIPS: uasm: Add MTHI/MTLO instructions
      MIPS: uasm: Add r6 MUL encoding
      MIPS; KVM: Convert exception entry to uasm
      MIPS: KVM: Add dumping of generated entry code
      MIPS: KVM: Drop now unused asm offsets
      MIPS: KVM: Omit FPU handling entry code if possible
      MIPS: KVM: Check MSA presence at uasm time
      MIPS: KVM: Drop redundant restore of DDATA_LO
      MIPS: KVM: Dynamically choose scratch registers
      MIPS: KVM: Relative branch to common exit handler
      MIPS: KVM: Save k0 straight into VCPU structure
      MIPS: KVM: Fix fpu.S misassembly with r6
      MIPS: KVM: Fix pre-r6 ll/sc instructions on r6
      MIPS: KVM: Don't save/restore lo/hi for r6
      MIPS: KVM: Support r6 compact branch emulation
      MIPS: KVM: Recognise r6 CACHE encoding
      MIPS: KVM: Decode RDHWR more strictly
      MIPS: KVM: Emulate generic QEMU machine on r6 T&E
      MIPS: Fix definition of KSEGX() for 64-bit
      MIPS: KVM: Use virt_to_phys() to get commpage PFN
      MIPS: KVM: Use kmap instead of CKSEG0ADDR()
      MIPS: KVM: Make entry code MIPS64 friendly
      MIPS: KVM: Set CP0_Status.KX on MIPS64
      MIPS: KVM: Use 64-bit CP0_EBase when appropriate
      MIPS: KVM: Fail if ebase doesn't fit in CP0_EBase
      MIPS: KVM: Fix 64-bit big endian dynamic translation
      MIPS: KVM: Sign extend MFC0/RDHWR results
      MIPS: KVM: Fix ptr->int cast via KVM_GUEST_KSEGX()
      MIPS: KVM: Reset CP0_PageMask during host TLB flush
      MIPS: Select HAVE_KVM for MIPS64_R{2,6}

Janosch Frank (7):
      s390: hypfs: Move diag implementation and data definitions
      s390: Make cpc_name accessible
      s390: Make diag224 public
      KVM: s390: Add operation exception interception handler
      KVM: s390: Extend diag 204 fields
      KVM: s390: Add sthyi emulation
      KVM: s390: Limit sthyi execution

Jim Mattson (1):
      KVM: VMX: Add VMCS to CPU's loaded VMCSs before VMPTRLD

Kai Huang (1):
      kvm/x86: remove unnecessary header file inclusion

Mahesh Salgaonkar (2):
      powerpc/powernv: Remove the usage of PACAR1 from opal wrappers
      KVM: PPC: Book3S HV: Fix TB corruption in guest exit path on HMI interrupt

Marc Zyngier (36):
      arm/arm64: KVM: Add a protection parameter to create_hyp_mappings
      arm64: Add PTE_HYP_XN page table flag
      arm/arm64: KVM: Enforce HYP read-only mapping of the kernel's rodata section
      arm/arm64: KVM: Map the HYP text as read-only
      arm/arm64: KVM: Make default HYP mappings non-excutable
      KVM: arm/arm64: The GIC is dead, long live the GIC
      arm64: KVM: Merged page tables documentation
      arm64: KVM: Always reference __hyp_panic_string via its kernel VA
      arm/arm64: KVM: Remove hyp_kern_va helper
      arm64: KVM: Kill HYP_PAGE_OFFSET
      arm64: Add ARM64_HYP_OFFSET_LOW capability
      arm64: KVM: Define HYP offset masks
      arm64: KVM: Refactor kern_hyp_va to deal with multiple offsets
      arm/arm64: KVM: Export __hyp_text_start/end symbols
      arm64: KVM: Runtime detection of lower HYP offset
      arm/arm64: KVM: Always have merged page tables
      arm64: KVM: Simplify HYP init/teardown
      arm/arm64: KVM: Drop boot_pgd
      arm/arm64: KVM: Kill free_boot_hyp_pgd
      arm: KVM: Simplify HYP init
      arm: KVM: Allow hyp teardown
      arm/arm64: KVM: Prune unused #defines
      arm/arm64: KVM: Check that IDMAP doesn't intersect with VA range
      arm/arm64: Get rid of KERN_TO_HYP
      irqchip/gicv3-its: Restore all cacheability attributes
      KVM: arm64: vgic-its: Generalize use of vgic_get_irq_kref
      KVM: arm64: vgic-its: Fix handling of indirect tables
      KVM: arm64: vgic-its: Fix vgic_its_check_device_id BE handling
      KVM: arm64: vgic-its: Fix misleading nr_entries in vgic_its_check_device_id
      KVM: arm64: vgic-its: Validate the device table L1 entry
      KVM: arm64: vgic-its: Fix L2 entry validation for indirect tables
      KVM: arm64: vgic-its: Add collection allocator/destructor
      KVM: arm64: vgic-its: Add pointer to corresponding kvm_device
      KVM: arm64: vgic-its: Turn device_id validation into generic ID validation
      KVM: arm64: vgic-its: Make vgic_its_cmd_handle_mapi similar to other handlers
      KVM: arm64: vgic-its: Simplify MAPI error handling

Martin Schwidefsky (7):
      s390/mm: set and get guest storage key mmap locking
      s390/kvm: page table invalidation notifier
      s390/mm: use RCU for gmap notifier list and the per-mm gmap list
      s390/mm: extended gmap pte notifier
      s390/mm: add reference counter to gmap structure
      s390/mm: add shadow gmap support
      s390/mm: add kvm shadow fault function

Paolo Bonzini (21):
      KVM: x86: avoid simultaneous queueing of both IRQ and SMI
      KVM: x86: rename process_smi to enter_smm, process_smi_request to process_smi
      KVM: x86: protect KVM_CREATE_PIT/KVM_CREATE_PIT2 with kvm->lock
      Merge branch 'kvm-mips-fixes' into HEAD
      Merge tag 'kvm-s390-next-4.8-1' of git://git.kernel.org/.../kvms390/linux into HEAD
      KVM: introduce kvm->created_vcpus
      KVM: remove kvm_vcpu_compatible
      KVM: s390: use kvm->created_vcpus
      Merge tag 'kvm-s390-next-4.8-2' of git://git.kernel.org/.../kvms390/linux into HEAD
      context_tracking: move rcu_virt_note_context_switch out of kvm_host.h
      KVM: remove kvm_guest_enter/exit wrappers
      KVM: x86: always use "acknowledge interrupt on exit"
      KVM: x86: use guest_exit_irqoff
      KVM: vmx: fix underflow in TSC deadline calculation
      KVM: MMU: prepare to support mapping of VM_IO and VM_PFNMAP frames
      KVM: MMU: try to fix up page faults before giving up
      Merge tag 'kvm-s390-next-4.8-3' of git://git.kernel.org/.../kvms390/linux into HEAD
      KVM: VMX: reflect broken preemption timer in vmcs_config
      KVM: nVMX: keep preemption timer enabled during L2 execution
      KVM: VMX: introduce vm_{entry,exit}_control_reset_shadow
      Merge branch 'kvm-ppc-next' of git://git.kernel.org/.../paulus/powerpc into HEAD

Paul Burton (2):
      MIPS: inst.h: Rename b{eq,ne}zcji[al]c_op to pop{6,7}6_op
      MIPS: inst.h: Rename cbcond{0,1}_op to pop{1,3}0_op

Paul Mackerras (2):
      KVM: PPC: Book3S HV: Pull out TM state save/restore into separate procedures
      KVM: PPC: Book3S HV: Save/restore TM state in H_CEDE

Radim Krčmář (17):
      KVM: x86: bump KVM_SOFT_MAX_VCPUS to 240
      KVM: x86: add kvm_apic_map_get_dest_lapic
      KVM: x86: use physical LAPIC array for logical x2APIC
      KVM: x86: dynamic kvm_apic_map
      KVM: x86: use generic function for MSI parsing
      KVM: x86: use hardware-compatible format for APIC ID register
      KVM: x86: reset APIC ID when enabling LAPIC
      KVM: VMX: optimize APIC ID read with APICv
      KVM: x86: reset lapic base in kvm_lapic_reset
      KVM: pass struct kvm to kvm_set_routing_entry
      KVM: x86: add KVM_CAP_X2APIC_API
      KVM: x86: add a flag to disable KVM x2apic broadcast quirk
      KVM: x86: bump MAX_VCPUS to 288
      KVM: x86: bump KVM_MAX_VCPU_ID to 1023
      Merge tag 'kvm-s390-next-4.8-4' of git://git.kernel.org/.../kvms390/linux into next
      Merge tag 'kvm-arm-for-4.8' of git://git.kernel.org/.../kvmarm/kvmarm into next
      Merge branch 'kvm-ppc-next' of git://git.kernel.org/.../paulus/powerpc into next

Sam Bobroff (1):
      KVM: PPC: Introduce KVM_CAP_PPC_HTM

Thomas Huth (2):
      KVM: PPC: Book3S PR: Fix illegal opcode emulation
      KVM: PPC: Book3S PR: Fix contents of SRR1 when injecting a program exception

Wanpeng Li (3):
      KVM: x86: introduce cancel_hv_tscdeadline
      KVM: vmx: fix missed cancellation of TSC deadline timer
      KVM: nVMX: avoid incorrect preemption timer vmexit in nested guest

Wei Yongjun (1):
      KVM: x86: Use ARRAY_SIZE instead of dividing sizeof array with sizeof an element

Yunhong Jiang (4):
      kvm: lapic: separate start_sw_tscdeadline from start_apic_timer
      KVM: x86: support using the vmx preemption timer for tsc deadline timer
      kvm: vmx: rename vmx_pre/post_block to pi_pre/post_block
      kvm: vmx: hook preemption timer support

 Documentation/virtual/kvm/api.txt                  |   82 +-
 Documentation/virtual/kvm/devices/arm-vgic.txt     |   25 +-
 Documentation/virtual/kvm/devices/vm.txt           |   87 +-
 Documentation/virtual/kvm/locking.txt              |    4 +-
 arch/arm/include/asm/kvm_asm.h                     |    2 +
 arch/arm/include/asm/kvm_host.h                    |   27 +-
 arch/arm/include/asm/kvm_hyp.h                     |    3 -
 arch/arm/include/asm/kvm_mmu.h                     |   15 +-
 arch/arm/include/asm/pgtable.h                     |    4 +-
 arch/arm/include/asm/virt.h                        |    4 +
 arch/arm/kvm/Kconfig                               |    7 -
 arch/arm/kvm/Makefile                              |    6 -
 arch/arm/kvm/arm.c                                 |   46 +-
 arch/arm/kvm/emulate.c                             |    2 +-
 arch/arm/kvm/guest.c                               |    2 +-
 arch/arm/kvm/init.S                                |   56 +-
 arch/arm/kvm/mmu.c                                 |  142 +-
 arch/arm/kvm/reset.c                               |    2 +-
 arch/arm64/include/asm/cpufeature.h                |    3 +-
 arch/arm64/include/asm/kvm_arm.h                   |    2 +-
 arch/arm64/include/asm/kvm_host.h                  |   19 +-
 arch/arm64/include/asm/kvm_hyp.h                   |   23 -
 arch/arm64/include/asm/kvm_mmu.h                   |   96 +-
 arch/arm64/include/asm/pgtable-hwdef.h             |    1 +
 arch/arm64/include/asm/pgtable-prot.h              |    4 +-
 arch/arm64/include/asm/virt.h                      |    4 +
 arch/arm64/include/uapi/asm/kvm.h                  |    2 +
 arch/arm64/kernel/cpufeature.c                     |   19 +
 arch/arm64/kvm/Kconfig                             |    8 +-
 arch/arm64/kvm/Makefile                            |    9 +-
 arch/arm64/kvm/guest.c                             |    2 +-
 arch/arm64/kvm/hyp-init.S                          |   61 +-
 arch/arm64/kvm/hyp/entry.S                         |   19 -
 arch/arm64/kvm/hyp/hyp-entry.S                     |   15 +
 arch/arm64/kvm/hyp/switch.c                        |   11 +-
 arch/arm64/kvm/reset.c                             |   38 +-
 arch/arm64/kvm/sys_regs.c                          |    4 +-
 arch/mips/Kconfig                                  |    2 +
 arch/mips/include/asm/addrspace.h                  |    2 +-
 arch/mips/include/asm/kvm_host.h                   |  315 +--
 .../asm/mach-cavium-octeon/cpu-feature-overrides.h |    2 +-
 arch/mips/include/asm/mipsregs.h                   |   21 +-
 arch/mips/include/asm/setup.h                      |    1 +
 arch/mips/include/asm/uasm.h                       |    7 +
 arch/mips/include/uapi/asm/inst.h                  |  114 +-
 arch/mips/kernel/asm-offsets.c                     |   70 -
 arch/mips/kernel/branch.c                          |    8 +-
 arch/mips/kernel/traps.c                           |   23 +-
 arch/mips/kvm/Kconfig                              |    1 +
 arch/mips/kvm/Makefile                             |    3 +-
 arch/mips/kvm/commpage.c                           |    2 +-
 arch/mips/kvm/dyntrans.c                           |  182 +-
 arch/mips/kvm/emulate.c                            |  485 ++--
 arch/mips/kvm/entry.c                              |  701 ++++++
 arch/mips/kvm/fpu.S                                |    7 +-
 arch/mips/kvm/interrupt.c                          |   12 +-
 arch/mips/kvm/interrupt.h                          |   14 +-
 arch/mips/kvm/locore.S                             |  605 -----
 arch/mips/kvm/mips.c                               |  367 ++-
 arch/mips/kvm/mmu.c                                |  375 +++
 arch/mips/kvm/stats.c                              |   21 -
 arch/mips/kvm/tlb.c                                |  498 +---
 arch/mips/kvm/trace.h                              |  236 +-
 arch/mips/kvm/trap_emul.c                          |  178 +-
 arch/mips/math-emu/cp1emu.c                        |    8 +-
 arch/mips/mm/c-r4k.c                               |    2 +-
 arch/mips/mm/uasm-micromips.c                      |   13 +-
 arch/mips/mm/uasm-mips.c                           |   11 +
 arch/mips/mm/uasm.c                                |   24 +-
 arch/powerpc/include/asm/hmi.h                     |   45 +
 arch/powerpc/include/asm/paca.h                    |    6 +
 arch/powerpc/kernel/Makefile                       |    2 +-
 arch/powerpc/kernel/exceptions-64s.S               |    4 +-
 arch/powerpc/kernel/hmi.c                          |   56 +
 arch/powerpc/kernel/idle_power7.S                  |    5 +-
 arch/powerpc/kernel/traps.c                        |    5 +
 arch/powerpc/kvm/book3s_hv.c                       |   41 +-
 arch/powerpc/kvm/book3s_hv_ras.c                   |  176 ++
 arch/powerpc/kvm/book3s_hv_rmhandlers.S            |  527 +++--
 arch/powerpc/kvm/book3s_pr.c                       |   16 +-
 arch/powerpc/kvm/booke.c                           |    4 +-
 arch/powerpc/kvm/emulate.c                         |    1 -
 arch/powerpc/kvm/mpic.c                            |    3 +-
 arch/powerpc/kvm/powerpc.c                         |    6 +-
 arch/powerpc/platforms/powernv/opal-wrappers.S     |    2 -
 arch/s390/hypfs/hypfs_diag.c                       |  375 +--
 arch/s390/include/asm/cpacf.h                      |   10 +
 arch/s390/include/asm/diag.h                       |  149 ++
 arch/s390/include/asm/gmap.h                       |   82 +-
 arch/s390/include/asm/kvm_host.h                   |   33 +-
 arch/s390/include/asm/mmu.h                        |   11 +-
 arch/s390/include/asm/mmu_context.h                |    3 +-
 arch/s390/include/asm/page.h                       |    9 +-
 arch/s390/include/asm/pgalloc.h                    |    2 +
 arch/s390/include/asm/pgtable.h                    |   17 +-
 arch/s390/include/asm/processor.h                  |    2 +
 arch/s390/include/asm/sclp.h                       |   23 +-
 arch/s390/include/uapi/asm/kvm.h                   |   41 +
 arch/s390/include/uapi/asm/sie.h                   |    1 +
 arch/s390/kernel/diag.c                            |   37 +
 arch/s390/kvm/Makefile                             |    2 +-
 arch/s390/kvm/diag.c                               |    5 +
 arch/s390/kvm/gaccess.c                            |  387 +++-
 arch/s390/kvm/gaccess.h                            |    3 +
 arch/s390/kvm/guestdbg.c                           |   19 +-
 arch/s390/kvm/intercept.c                          |   33 +-
 arch/s390/kvm/interrupt.c                          |   34 +-
 arch/s390/kvm/kvm-s390.c                           |  402 +++-
 arch/s390/kvm/kvm-s390.h                           |   22 +-
 arch/s390/kvm/priv.c                               |  226 +-
 arch/s390/kvm/sigp.c                               |   10 +-
 arch/s390/kvm/sthyi.c                              |  471 ++++
 arch/s390/kvm/trace.h                              |   49 +-
 arch/s390/kvm/vsie.c                               | 1091 +++++++++
 arch/s390/mm/fault.c                               |    2 +
 arch/s390/mm/gmap.c                                | 1602 ++++++++++++-
 arch/s390/mm/pgalloc.c                             |   39 +-
 arch/s390/mm/pgtable.c                             |  209 +-
 arch/x86/include/asm/kvm_host.h                    |   31 +-
 arch/x86/include/asm/svm.h                         |    1 -
 arch/x86/include/asm/virtext.h                     |    8 +-
 arch/x86/kvm/Kconfig                               |    1 -
 arch/x86/kvm/i8254.c                               |    4 +-
 arch/x86/kvm/iommu.c                               |    2 -
 arch/x86/kvm/irq_comm.c                            |   49 +-
 arch/x86/kvm/lapic.c                               |  539 +++--
 arch/x86/kvm/lapic.h                               |   19 +-
 arch/x86/kvm/mmu.c                                 |   29 +-
 arch/x86/kvm/mmu.h                                 |    5 -
 arch/x86/kvm/paging_tmpl.h                         |   10 +-
 arch/x86/kvm/pmu_intel.c                           |    2 +-
 arch/x86/kvm/svm.c                                 |    8 +-
 arch/x86/kvm/trace.h                               |   15 +
 arch/x86/kvm/vmx.c                                 |  386 +++-
 arch/x86/kvm/x86.c                                 |  175 +-
 drivers/s390/char/sclp_early.c                     |   12 +-
 drivers/s390/char/sclp_ocf.c                       |   23 +-
 include/kvm/arm_vgic.h                             |  438 ++--
 include/kvm/vgic/vgic.h                            |  246 --
 include/linux/context_tracking.h                   |   38 +-
 include/linux/irqchip/arm-gic-v3.h                 |  212 +-
 include/linux/kvm_host.h                           |   58 +-
 include/linux/page_ref.h                           |    9 +
 include/trace/events/kvm.h                         |    5 +-
 include/uapi/linux/kvm.h                           |   13 +-
 mm/gup.c                                           |    1 +
 virt/kvm/Kconfig                                   |    3 -
 virt/kvm/arm/hyp/vgic-v2-sr.c                      |   15 +-
 virt/kvm/arm/vgic-v2-emul.c                        |  856 -------
 virt/kvm/arm/vgic-v2.c                             |  274 ---
 virt/kvm/arm/vgic-v3-emul.c                        | 1074 ---------
 virt/kvm/arm/vgic-v3.c                             |  279 ---
 virt/kvm/arm/vgic.c                                | 2440 --------------------
 virt/kvm/arm/vgic.h                                |  140 --
 virt/kvm/arm/vgic/vgic-init.c                      |    9 +-
 virt/kvm/arm/vgic/vgic-its.c                       | 1500 ++++++++++++
 virt/kvm/arm/vgic/vgic-kvm-device.c                |   22 +-
 virt/kvm/arm/vgic/vgic-mmio-v2.c                   |   10 +
 virt/kvm/arm/vgic/vgic-mmio-v3.c                   |  247 +-
 virt/kvm/arm/vgic/vgic-mmio.c                      |   64 +-
 virt/kvm/arm/vgic/vgic-mmio.h                      |   31 +-
 virt/kvm/arm/vgic/vgic-v2.c                        |   12 +-
 virt/kvm/arm/vgic/vgic-v3.c                        |   29 +-
 virt/kvm/arm/vgic/vgic.c                           |  119 +-
 virt/kvm/arm/vgic/vgic.h                           |   38 +-
 virt/kvm/irqchip.c                                 |    7 +-
 virt/kvm/kvm_main.c                                |  110 +-
 167 files changed, 11776 insertions(+), 9308 deletions(-)
 create mode 100644 arch/mips/kvm/entry.c
 delete mode 100644 arch/mips/kvm/locore.S
 create mode 100644 arch/mips/kvm/mmu.c
 create mode 100644 arch/powerpc/include/asm/hmi.h
 create mode 100644 arch/powerpc/kernel/hmi.c
 create mode 100644 arch/s390/kvm/sthyi.c
 create mode 100644 arch/s390/kvm/vsie.c
 delete mode 100644 include/kvm/vgic/vgic.h
 delete mode 100644 virt/kvm/arm/vgic-v2-emul.c
 delete mode 100644 virt/kvm/arm/vgic-v2.c
 delete mode 100644 virt/kvm/arm/vgic-v3-emul.c
 delete mode 100644 virt/kvm/arm/vgic-v3.c
 delete mode 100644 virt/kvm/arm/vgic.c
 delete mode 100644 virt/kvm/arm/vgic.h
 create mode 100644 virt/kvm/arm/vgic/vgic-its.c

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [GIT PULL] KVM changes for 4.8 merge window
  2016-08-02 12:37 [GIT PULL] KVM changes for 4.8 merge window Paolo Bonzini
@ 2016-08-02 18:02 ` Christian Borntraeger
  2016-08-02 18:42   ` Linus Torvalds
  2016-08-02 18:55   ` Paolo Bonzini
  2016-08-03  3:21 ` Michael Ellerman
  1 sibling, 2 replies; 12+ messages in thread
From: Christian Borntraeger @ 2016-08-02 18:02 UTC (permalink / raw)
  To: Paolo Bonzini, torvalds
  Cc: linux-kernel, rkrcmar, kvm, Christoffer Dall, Dan Williams,
	Marc Zyngier, Paul Mackerras, Michael Ellerman,
	Martin Schwidefsky, Heiko Carstens

On 08/02/2016 02:37 PM, Paolo Bonzini wrote:
[snip]
lots of conflicts all over the place
[snip]

looks like all architectures collected their merge conflicts for a year 
in one release...
 
> - arch/s390: also messy.  First is hypfs_diag.c where the KVM tree
> moved some code and the s390 tree patched it.  You have to reapply the
> relevant part of commits 6c22c9863760, plus all of e030c1125eab, to
> arch/s390/kernel/diag.c.  Or pick the linux-next conflict
> resolution from http://marc.info/?l=kvm&m=146717549531603&w=2.
> Second, there is a conflict in gmap.c between a stable fix and 4.8.
> The KVM version here is the correct one.

Adding Heiko and Martin,

I think this time it was really tricky, but I cannot see a way to avoid these 2
conflicts other than 
1. to route everything that conflicts via Martins s390 (thus bypassing the 
kvm tree) - which then means to route everything in arch/s390/kvm/
via Martin as I would conflict with myself otherwise. Of course cross-architecture
changes in arch/*/kvm could then cause other conflicts.
2. do non-kvm via arch tree and wait for a full merge window to add the 
dependencies. Of course this might not work as things are moving and will slow
down things a lot

The topic branch variant of x86 only works because Ingos tip request are always
pulled before kvm it seems. There is no guaranteed order if s390 or kvm comes
first, though - so If I rebase at rc7 on a topic branch from Martin, then Linus 
might pull s390 changes via Paolo - I do not think this is ok.
 
In the end a merge conflict might be just the right thing over rebases - this time it
was just a lot.

Lets have a look at the s390 diag move: Actually the kvm patch has the oldest
commit date, but the other two patches are real bugfixes that came after
that. You would have to rebase the kvm/next tree to avoid the conflict
with the 2nd one - which is a bad idea for a tree that has downstream users.

We might want to have a better way of just getting the fixes from next.
All s390 fixups in next have been there since end of June. So over a month
of test coverage.

Linus, do you use next as a tie-breaker for merge resolutions or is there
a natural way of getting the fixups from Stephen? 


> 
> I have pushed my resolution at refs/heads/merge-20160802 (commit
> 3d1f53419842) at git://git.kernel.org/pub/scm/virt/kvm/kvm.git.

I checked this resolution. To make things complete
There is another fixup necessary for s390, see

https://patchwork.kernel.org/patch/9162647/

Christian




^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [GIT PULL] KVM changes for 4.8 merge window
  2016-08-02 18:02 ` Christian Borntraeger
@ 2016-08-02 18:42   ` Linus Torvalds
  2016-08-02 20:17     ` Linus Torvalds
  2016-08-02 18:55   ` Paolo Bonzini
  1 sibling, 1 reply; 12+ messages in thread
From: Linus Torvalds @ 2016-08-02 18:42 UTC (permalink / raw)
  To: Christian Borntraeger
  Cc: Paolo Bonzini, Linux Kernel Mailing List,
	Radim Krčmář, KVM list, Christoffer Dall,
	Dan Williams, Marc Zyngier, Paul Mackerras, Michael Ellerman,
	Martin Schwidefsky, Heiko Carstens

On Tue, Aug 2, 2016 at 2:02 PM, Christian Borntraeger
<borntraeger@de.ibm.com> wrote:
>
> Linus, do you use next as a tie-breaker for merge resolutions or is there
> a natural way of getting the fixups from Stephen?

No, I don't use the merge from linux-next directly. I just re-generate
the merge myself, and if the pull request then includes a merge
resolution (either as just a verbal description, or a patch or by
having a separate "merged" test-branch), I will compare my merge with
that one.

              Linus

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [GIT PULL] KVM changes for 4.8 merge window
  2016-08-02 18:02 ` Christian Borntraeger
  2016-08-02 18:42   ` Linus Torvalds
@ 2016-08-02 18:55   ` Paolo Bonzini
  1 sibling, 0 replies; 12+ messages in thread
From: Paolo Bonzini @ 2016-08-02 18:55 UTC (permalink / raw)
  To: Christian Borntraeger
  Cc: torvalds, linux-kernel, rkrcmar, kvm, Christoffer Dall,
	Dan Williams, Marc Zyngier, Paul Mackerras, Michael Ellerman,
	Martin Schwidefsky, Heiko Carstens


> looks like all architectures collected their merge conflicts for a year
> in one release...

Yes, pretty much.  MIPS had conflicts too; however I applied their patches
instead of going through a pull request, so I did the topic branch dance
myself. :)

> > - arch/s390: also messy.  First is hypfs_diag.c where the KVM tree
> > moved some code and the s390 tree patched it.  You have to reapply the
> > relevant part of commits 6c22c9863760, plus all of e030c1125eab, to
> > arch/s390/kernel/diag.c.  Or pick the linux-next conflict
> > resolution from http://marc.info/?l=kvm&m=146717549531603&w=2.
> > Second, there is a conflict in gmap.c between a stable fix and 4.8.
> > The KVM version here is the correct one.
> 
> Adding Heiko and Martin,
> 
> I think this time it was really tricky, but I cannot see a way to avoid these
> 2 conflicts other than

For the diag conflict, the right thing to do would have been the following:

1) Janosch sends the patch to Martin

2) Martin prepares a topic branch with Janosch's patch only

3) Both Martin and you pull the topic branch

4) you send the pull request normally to me.

> The topic branch variant of x86 only works because Ingos tip request are
> always pulled before kvm it seems. There is no guaranteed order if s390 or
> kvm comes first, though - so If I rebase at rc7 on a topic branch from Martin,
> then Linus might pull s390 changes via Paolo - I do not think this is ok.

In general architectures come first.  I rarely send pull requests before
the first Thursday of the merge window because KVM comes after architecture
trees in linux-next.  This lets me double check my own conflict resolution
against Stephen's one from the linux-next emails.

> Lets have a look at the s390 diag move: Actually the kvm patch has the oldest
> commit date, but the other two patches are real bugfixes that came after
> that.

That's fine.  That means the conflicts would have come nevertheless to Linus,
but that would have happened through Martin's tree rather than mine.

Note that there's a way to avoid this kind of conflicts too.  Base
the stable fixes topic branch on `git merge-base kvm/master kvm/next`,
and ask me to pull into both kvm/master and kvm/next.  It's not always
necessary, but it's good to know it and it pushes the conflict away
from Linus (which AFAIK wants to see conflicts between subsystems but
is not necessary interested in conflicts between -rc and merge window
material).  I did this for MIPS for example.

> Linus, do you use next as a tie-breaker for merge resolutions or is there
> a natural way of getting the fixups from Stephen?

AFAIK it's a mixture between looking at histories himself and relying on
explanations from submaintainers (which in turn may refer to linux-next).

> > I have pushed my resolution at refs/heads/merge-20160802 (commit
> > 3d1f53419842) at git://git.kernel.org/pub/scm/virt/kvm/kvm.git.
> 
> I checked this resolution. To make things complete
> There is another fixup necessary for s390, see
> 
> https://patchwork.kernel.org/patch/9162647/

Great, thanks.  I must admit I forgot about this one (I confused it
with the commit that introduced nopr in __diag204).

Paolo

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [GIT PULL] KVM changes for 4.8 merge window
  2016-08-02 18:42   ` Linus Torvalds
@ 2016-08-02 20:17     ` Linus Torvalds
  2016-08-02 20:49       ` Christian Borntraeger
  2016-08-02 21:36       ` Martin Schwidefsky
  0 siblings, 2 replies; 12+ messages in thread
From: Linus Torvalds @ 2016-08-02 20:17 UTC (permalink / raw)
  To: Christian Borntraeger
  Cc: Paolo Bonzini, Linux Kernel Mailing List,
	Radim Krčmář, KVM list, Christoffer Dall,
	Dan Williams, Marc Zyngier, Paul Mackerras, Michael Ellerman,
	Martin Schwidefsky, Heiko Carstens

On Tue, Aug 2, 2016 at 2:42 PM, Linus Torvalds
<torvalds@linux-foundation.org> wrote:
>
> No, I don't use the merge from linux-next directly. I just re-generate
> the merge myself, and if the pull request then includes a merge
> resolution (either as just a verbal description, or a patch or by
> having a separate "merged" test-branch), I will compare my merge with
> that one.

Ok, the KVM merge was indeed the most painful one this merge window so
far. Which isn't saying all that much, since this merge window has so
far been pretty good (knock wood).

Let's see if I got everything right. I did pick up the fixup patch
from Sudip and made it part of the merge, so that hopefully it's all
complete and also bisectable.

Please do check it out. And let's hope the KVM people have learnt
their lesson and we won't have these messy merges in the future.

          Linus

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [GIT PULL] KVM changes for 4.8 merge window
  2016-08-02 20:17     ` Linus Torvalds
@ 2016-08-02 20:49       ` Christian Borntraeger
  2016-08-02 21:36       ` Martin Schwidefsky
  1 sibling, 0 replies; 12+ messages in thread
From: Christian Borntraeger @ 2016-08-02 20:49 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Paolo Bonzini, Linux Kernel Mailing List,
	Radim Krčmář, KVM list, Christoffer Dall,
	Dan Williams, Marc Zyngier, Paul Mackerras, Michael Ellerman,
	Martin Schwidefsky, Heiko Carstens

On 08/02/2016 10:17 PM, Linus Torvalds wrote:
> On Tue, Aug 2, 2016 at 2:42 PM, Linus Torvalds
> <torvalds@linux-foundation.org> wrote:
>>
>> No, I don't use the merge from linux-next directly. I just re-generate
>> the merge myself, and if the pull request then includes a merge
>> resolution (either as just a verbal description, or a patch or by
>> having a separate "merged" test-branch), I will compare my merge with
>> that one.
> 
> Ok, the KVM merge was indeed the most painful one this merge window so
> far. Which isn't saying all that much, since this merge window has so
> far been pretty good (knock wood).
> 
> Let's see if I got everything right. I did pick up the fixup patch
> from Sudip and made it part of the merge, so that hopefully it's all
> complete and also bisectable.
> 
> Please do check it out. And let's hope the KVM people have learnt
> their lesson and we won't have these messy merges in the future.

s390 kvm compiles fine and seems to work. (new features vsie, sthyi 
and cpu model and a simple regression worked fine). Thanks

Christian


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [GIT PULL] KVM changes for 4.8 merge window
  2016-08-02 20:17     ` Linus Torvalds
  2016-08-02 20:49       ` Christian Borntraeger
@ 2016-08-02 21:36       ` Martin Schwidefsky
  2016-08-02 21:46         ` Linus Torvalds
  1 sibling, 1 reply; 12+ messages in thread
From: Martin Schwidefsky @ 2016-08-02 21:36 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Christian Borntraeger, Paolo Bonzini, Linux Kernel Mailing List,
	Radim Krčmář, KVM list, Christoffer Dall,
	Dan Williams, Marc Zyngier, Paul Mackerras, Michael Ellerman,
	Heiko Carstens

On Tue, 2 Aug 2016 16:17:39 -0400
Linus Torvalds <torvalds@linux-foundation.org> wrote:

> On Tue, Aug 2, 2016 at 2:42 PM, Linus Torvalds
> <torvalds@linux-foundation.org> wrote:
> >
> > No, I don't use the merge from linux-next directly. I just re-generate
> > the merge myself, and if the pull request then includes a merge
> > resolution (either as just a verbal description, or a patch or by
> > having a separate "merged" test-branch), I will compare my merge with
> > that one.
> 
> Ok, the KVM merge was indeed the most painful one this merge window so
> far. Which isn't saying all that much, since this merge window has so
> far been pretty good (knock wood).
> 
> Let's see if I got everything right. I did pick up the fixup patch
> from Sudip and made it part of the merge, so that hopefully it's all
> complete and also bisectable.
> 
> Please do check it out. And let's hope the KVM people have learnt
> their lesson and we won't have these messy merges in the future.

I included my try to fixup the expected merge conflict between the
KVM tree and the s390 tree at the end of the first please-merge email
for s390. Dunno if you have noticed this, the merge result looks good
to me.

-- 
blue skies,
   Martin.

"Reality continues to ruin my life." - Calvin.


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [GIT PULL] KVM changes for 4.8 merge window
  2016-08-02 21:36       ` Martin Schwidefsky
@ 2016-08-02 21:46         ` Linus Torvalds
  0 siblings, 0 replies; 12+ messages in thread
From: Linus Torvalds @ 2016-08-02 21:46 UTC (permalink / raw)
  To: Martin Schwidefsky
  Cc: Christian Borntraeger, Paolo Bonzini, Linux Kernel Mailing List,
	Radim Krčmář, KVM list, Christoffer Dall,
	Dan Williams, Marc Zyngier, Paul Mackerras, Michael Ellerman,
	Heiko Carstens

On Tue, Aug 2, 2016 at 5:36 PM, Martin Schwidefsky
<schwidefsky@de.ibm.com> wrote:
>
> I included my try to fixup the expected merge conflict between the
> KVM tree and the s390 tree at the end of the first please-merge email
> for s390.

Heh. It's "out of sight, out of mind". Once I've pulled something, I
usually don't have the mental bandwidth to remember details from
previous merge requests during the merge window. There's just too many
of them.

>   Dunno if you have noticed this, the merge result looks good
> to me.

Thanks,

                Linus

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [GIT PULL] KVM changes for 4.8 merge window
  2016-08-02 12:37 [GIT PULL] KVM changes for 4.8 merge window Paolo Bonzini
  2016-08-02 18:02 ` Christian Borntraeger
@ 2016-08-03  3:21 ` Michael Ellerman
  2016-08-03  6:26   ` Paolo Bonzini
  1 sibling, 1 reply; 12+ messages in thread
From: Michael Ellerman @ 2016-08-03  3:21 UTC (permalink / raw)
  To: Paolo Bonzini, torvalds
  Cc: linux-kernel, rkrcmar, kvm, Christian Borntraeger,
	Christoffer Dall, Dan Williams, Marc Zyngier, Paul Mackerras

Paolo Bonzini <pbonzini@redhat.com> writes:
...
> - arch/powerpc: what a mess.  For the idle_book3s.S conflict, the KVM
> tree is the right one; everything else is trivial.  In this case I am
> not quite sure what went wrong.  The commit that is causing the mess
> (fd7bacbca47a, "KVM: PPC: Book3S HV: Fix TB corruption in guest exit
> path on HMI interrupt", 2016-05-15) touches both arch/powerpc/kernel/
> and arch/powerpc/kvm/.  It's large, but at 396 insertions/5 deletions
> I guessed that it wasn't really possible to split it and that the 5
> deletions wouldn't conflict.  That wasn't the case.

In fact I think the problem is that this patch shouldn't have gone via the KVM
tree at all.

If you look at the diffstat, it doesn't touch anything in generic KVM, but lots
of arch code:

 arch/powerpc/include/asm/hmi.h          |  45 ++++++++++++++++++++
 arch/powerpc/include/asm/paca.h         |   6 +++
 arch/powerpc/kernel/Makefile            |   2 +-
 arch/powerpc/kernel/exceptions-64s.S    |   4 +-
 arch/powerpc/kernel/hmi.c               |  56 +++++++++++++++++++++++++
 arch/powerpc/kernel/idle_power7.S       |   5 ++-
 arch/powerpc/kernel/traps.c             |   5 +++
 arch/powerpc/kvm/book3s_hv.c            |  37 +++++++++++++++++
 arch/powerpc/kvm/book3s_hv_ras.c        | 176 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 arch/powerpc/kvm/book3s_hv_rmhandlers.S |  65 ++++++++++++++++++++++++++++-


Presumably Paul wanted it in his kvm-ppc tree so it would be tested with the
rest of the KVM stuff, but we should have done that with a topic branch in the
powerpc tree, that we both merged.

cheers

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [GIT PULL] KVM changes for 4.8 merge window
  2016-08-03  3:21 ` Michael Ellerman
@ 2016-08-03  6:26   ` Paolo Bonzini
  2016-08-03  6:46     ` Michael Ellerman
  0 siblings, 1 reply; 12+ messages in thread
From: Paolo Bonzini @ 2016-08-03  6:26 UTC (permalink / raw)
  To: Michael Ellerman, torvalds
  Cc: linux-kernel, rkrcmar, kvm, Christian Borntraeger,
	Christoffer Dall, Dan Williams, Marc Zyngier, Paul Mackerras



On 03/08/2016 05:21, Michael Ellerman wrote:
> Paolo Bonzini <pbonzini@redhat.com> writes:
> ...
>> - arch/powerpc: what a mess.  For the idle_book3s.S conflict, the KVM
>> tree is the right one; everything else is trivial.  In this case I am
>> not quite sure what went wrong.  The commit that is causing the mess
>> (fd7bacbca47a, "KVM: PPC: Book3S HV: Fix TB corruption in guest exit
>> path on HMI interrupt", 2016-05-15) touches both arch/powerpc/kernel/
>> and arch/powerpc/kvm/.  It's large, but at 396 insertions/5 deletions
>> I guessed that it wasn't really possible to split it and that the 5
>> deletions wouldn't conflict.  That wasn't the case.
> 
> In fact I think the problem is that this patch shouldn't have gone via the KVM
> tree at all.
> 
> If you look at the diffstat, it doesn't touch anything in generic KVM, but lots
> of arch code:

The KVM tree merges all arch/*/kvm code from submaintainers.  Only Radim
and I send patches directly to Linus.

Considering the h in "hmi" is for hypervisor, actual non-virt code in
that patch was this:

  arch/powerpc/include/asm/paca.h         |   6 +++
  arch/powerpc/kernel/Makefile            |   2 +-
  arch/powerpc/kernel/exceptions-64s.S    |   4 +-
  arch/powerpc/kernel/idle_power7.S       |   5 ++-
  arch/powerpc/kernel/traps.c             |   5 +++

So the changes are pretty small, yet apart from paca.h every file ended
up having a conflict with the PPC tree.  So I think it's just very bad
luck in this case.  Having this patch in a topic branch merged by both
PPC and KVM maintainers would have still been a good idea, because I
guess Paul knew of Ben's idle_power7.S cleanup.

Paolo

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [GIT PULL] KVM changes for 4.8 merge window
  2016-08-03  6:26   ` Paolo Bonzini
@ 2016-08-03  6:46     ` Michael Ellerman
  2016-08-03 11:00       ` Paolo Bonzini
  0 siblings, 1 reply; 12+ messages in thread
From: Michael Ellerman @ 2016-08-03  6:46 UTC (permalink / raw)
  To: Paolo Bonzini, torvalds
  Cc: linux-kernel, rkrcmar, kvm, Christian Borntraeger,
	Christoffer Dall, Dan Williams, Marc Zyngier, Paul Mackerras

Paolo Bonzini <pbonzini@redhat.com> writes:

> On 03/08/2016 05:21, Michael Ellerman wrote:
>> Paolo Bonzini <pbonzini@redhat.com> writes:
>> ...
>>> - arch/powerpc: what a mess.  For the idle_book3s.S conflict, the KVM
>>> tree is the right one; everything else is trivial.  In this case I am
>>> not quite sure what went wrong.  The commit that is causing the mess
>>> (fd7bacbca47a, "KVM: PPC: Book3S HV: Fix TB corruption in guest exit
>>> path on HMI interrupt", 2016-05-15) touches both arch/powerpc/kernel/
>>> and arch/powerpc/kvm/.  It's large, but at 396 insertions/5 deletions
>>> I guessed that it wasn't really possible to split it and that the 5
>>> deletions wouldn't conflict.  That wasn't the case.
>> 
>> In fact I think the problem is that this patch shouldn't have gone via the KVM
>> tree at all.
>> 
>> If you look at the diffstat, it doesn't touch anything in generic KVM, but lots
>> of arch code:
>
> The KVM tree merges all arch/*/kvm code from submaintainers.  Only Radim
> and I send patches directly to Linus.

Sure.

But that's really my point. Just because a patch touches arch/*/kvm,
doesn't mean it must go via the KVM tree.

If the only arch code it touches is arch/*/kvm, then it should trivially
go via the KVM tree.

But if it touches other arch code then it's quite likely it will end up
conflicting with the arch tree, in which case it it's less likely to
cause problems if it goes into the arch tree, possibly in a topic
branch.

> Considering the h in "hmi" is for hypervisor,

Well hypervisor != KVM.

Though in this case hmi.c was pretty safe because it was new code. But
if I'd received a powerpc patch to hmi.c I wouldn't have thought to
check if it conflicted with the KVM tree.

> actual non-virt code in that patch was this:
>
>   arch/powerpc/include/asm/paca.h         |   6 +++
>   arch/powerpc/kernel/Makefile            |   2 +-
>   arch/powerpc/kernel/exceptions-64s.S    |   4 +-
>   arch/powerpc/kernel/idle_power7.S       |   5 ++-
>   arch/powerpc/kernel/traps.c             |   5 +++
>
> So the changes are pretty small, yet apart from paca.h every file ended
> up having a conflict with the PPC tree.  So I think it's just very bad
> luck in this case.

I guess. Makefile changes often conflict, though they're usually
trivial, and I'd guess exceptions-64s.S is patched in some way in most
releases.

But if there are changes outside arch/*/kvm in the KVM tree then it's
just luck if they don't conflict.

> Having this patch in a topic branch merged by both PPC and KVM
> maintainers would have still been a good idea, because I guess Paul
> knew of Ben's idle_power7.S cleanup.

I'm not sure who knew what when. Paul was travelling for some of the
merge window, and I was sick for some of it, so mistakes were made :)

cheers

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [GIT PULL] KVM changes for 4.8 merge window
  2016-08-03  6:46     ` Michael Ellerman
@ 2016-08-03 11:00       ` Paolo Bonzini
  0 siblings, 0 replies; 12+ messages in thread
From: Paolo Bonzini @ 2016-08-03 11:00 UTC (permalink / raw)
  To: Michael Ellerman, torvalds
  Cc: linux-kernel, rkrcmar, kvm, Christian Borntraeger,
	Christoffer Dall, Dan Williams, Marc Zyngier, Paul Mackerras



On 03/08/2016 08:46, Michael Ellerman wrote:
>> Considering the h in "hmi" is for hypervisor,
> 
> Well hypervisor != KVM.
> 
> Though in this case hmi.c was pretty safe because it was new code. But
> if I'd received a powerpc patch to hmi.c I wouldn't have thought to
> check if it conflicted with the KVM tree.

This, together with the fact that hmi.c does nothing if KVM is
inactive, suggests to me that hmi.c should be in arch/powerpc/kvm.
I'll send a patch soo; I don't care who merges it, but a topic
branch would be appropriate. ;)

Paolo

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2016-08-03 11:00 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-08-02 12:37 [GIT PULL] KVM changes for 4.8 merge window Paolo Bonzini
2016-08-02 18:02 ` Christian Borntraeger
2016-08-02 18:42   ` Linus Torvalds
2016-08-02 20:17     ` Linus Torvalds
2016-08-02 20:49       ` Christian Borntraeger
2016-08-02 21:36       ` Martin Schwidefsky
2016-08-02 21:46         ` Linus Torvalds
2016-08-02 18:55   ` Paolo Bonzini
2016-08-03  3:21 ` Michael Ellerman
2016-08-03  6:26   ` Paolo Bonzini
2016-08-03  6:46     ` Michael Ellerman
2016-08-03 11:00       ` Paolo Bonzini

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox