Merge tag 'kvm-3.7-1' of git://git.kernel.org/pub/scm/virt/kvm/kvm
Pull KVM updates from Avi Kivity: "Highlights of the changes for this release include support for vfio level triggered interrupts, improved big real mode support on older Intels, a streamlines guest page table walker, guest APIC speedups, PIO optimizations, better overcommit handling, and read-only memory." * tag 'kvm-3.7-1' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (138 commits) KVM: s390: Fix vcpu_load handling in interrupt code KVM: x86: Fix guest debug across vcpu INIT reset KVM: Add resampling irqfds for level triggered interrupts KVM: optimize apic interrupt delivery KVM: MMU: Eliminate pointless temporary 'ac' KVM: MMU: Avoid access/dirty update loop if all is well KVM: MMU: Eliminate eperm temporary KVM: MMU: Optimize is_last_gpte() KVM: MMU: Simplify walk_addr_generic() loop KVM: MMU: Optimize pte permission checks KVM: MMU: Update accessed and dirty bits after guest pagetable walk KVM: MMU: Move gpte_access() out of paging_tmpl.h KVM: MMU: Optimize gpte_access() slightly KVM: MMU: Push clean gpte write protection out of gpte_access() KVM: clarify kvmclock documentation KVM: make processes waiting on vcpu mutex killable KVM: SVM: Make use of asm.h KVM: VMX: Make use of asm.h KVM: VMX: Make lto-friendly KVM: x86: lapic: Clean up find_highest_vector() and count_vectors() ... Conflicts: arch/s390/include/asm/processor.h arch/x86/kvm/i8259.c
This commit is contained in:
@@ -1501,6 +1501,33 @@ static struct insn *find_insn(unsigned char *code)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* insn_to_mnemonic - decode an s390 instruction
|
||||
* @instruction: instruction to decode
|
||||
* @buf: buffer to fill with mnemonic
|
||||
*
|
||||
* Decode the instruction at @instruction and store the corresponding
|
||||
* mnemonic into @buf.
|
||||
* @buf is left unchanged if the instruction could not be decoded.
|
||||
* Returns:
|
||||
* %0 on success, %-ENOENT if the instruction was not found.
|
||||
*/
|
||||
int insn_to_mnemonic(unsigned char *instruction, char buf[8])
|
||||
{
|
||||
struct insn *insn;
|
||||
|
||||
insn = find_insn(instruction);
|
||||
if (!insn)
|
||||
return -ENOENT;
|
||||
if (insn->name[0] == '\0')
|
||||
snprintf(buf, sizeof(buf), "%s",
|
||||
long_insn_name[(int) insn->name[1]]);
|
||||
else
|
||||
snprintf(buf, sizeof(buf), "%.5s", insn->name);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(insn_to_mnemonic);
|
||||
|
||||
static int print_insn(char *buffer, unsigned char *code, unsigned long addr)
|
||||
{
|
||||
struct insn *insn;
|
||||
|
Reference in New Issue
Block a user