* [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