#
e6655b75 |
| 19-Jun-2015 |
Michael Ellerman <mpe@ellerman.id.au> |
powerpc: Enable 32-bit build
We have always built kvmtool as 64-bit on powerpc, but mainly just out of habit. There's not AFAIK any reason we *can't* build 32-bit.
So fix up a few places where we w
powerpc: Enable 32-bit build
We have always built kvmtool as 64-bit on powerpc, but mainly just out of habit. There's not AFAIK any reason we *can't* build 32-bit.
So fix up a few places where we were assuming 64-bit, and drop the Makefile logic that forces 64-bit.
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Will Deacon <will.deacon@arm.com>
show more ...
|
#
9b735910 |
| 08-May-2014 |
Marc Zyngier <marc.zyngier@arm.com> |
kvmtool: pass trapped vcpu to MMIO accessors
In order to be able to find out about the endianness of a virtual CPU, it is necessary to pass a pointer to the kvm_cpu structure down to the MMIO access
kvmtool: pass trapped vcpu to MMIO accessors
In order to be able to find out about the endianness of a virtual CPU, it is necessary to pass a pointer to the kvm_cpu structure down to the MMIO accessors.
This patch just pushes such pointer as far as required for the MMIO accessors to have a play with the vcpu.
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|
#
a7f046df |
| 04-Feb-2013 |
Michael Ellerman <michael@ellerman.id.au> |
kvm tools: Fix powerpc build after kvm__dump_mem() change
Commit 21692d1 (Beautify debug output) broke the powerpc build because it changed the signature for kvm__dump_mem() but didn't update all ca
kvm tools: Fix powerpc build after kvm__dump_mem() change
Commit 21692d1 (Beautify debug output) broke the powerpc build because it changed the signature for kvm__dump_mem() but didn't update all callers.
Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|
#
e016c60d |
| 05-Oct-2012 |
Michael Ellerman <michael@ellerman.id.au> |
kvm tools: Fix segfault on powerpc in xics_register()
In commit 06e6648 "move kvm_cpus into struct kvm", kvm_cpu__init() became kvm_cpu__arch_init() called from a new kvm_cpu__init(), and the call w
kvm tools: Fix segfault on powerpc in xics_register()
In commit 06e6648 "move kvm_cpus into struct kvm", kvm_cpu__init() became kvm_cpu__arch_init() called from a new kvm_cpu__init(), and the call was moved from the end of the init sequence to much earlier, and in particular prior to irq__init().
This leads to a segfault on powerpc, because kvm_cpu__arch_init() calls into xics_cpu_register(), which dereferences vcpu->kvm.icp which is uninitialised until irq__init().
Later in commit a48488d "use init/exit where possible", irq__init() was pulled out of the init sequence and made a dev_base_init() routine, on x86. On powerpc the call to irq__init() was dropped entirely.
Finally, we now have a circular dependency between kvm_cpu__init() (which needs kvm->arch.icp), and irq__init() (which needs kvm->nrcpus). This is caused by the combination of commit 89f40a7 "move nrcpus into struct kvm_config", which moved the global nrcpus into kvm->cfg, and commit 06e6648 "move kvm_cpus into struct kvm", which moved the setup of kvm->nrcpus from kvm->cfg into kvm_cpu__init().
To fix it we drop irq__init() entirely, if we ever have a non xics irq option we can bring it back. We turn xics_system_init() into xics_init(), and have it do the allocation and setup of the icp/ics, including the per-vcpu setup, removing the dependency from kvm_cpu__init() (via kvm_cpu__arch_init()).
xics_init() is a base_init() routine, it can't be core, which should be early enough, fingers crossed.
Finally drop irq__exit(), it does nothing and is never called.
Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|
#
df4239fb |
| 05-Sep-2012 |
Sasha Levin <levinsasha928@gmail.com> |
kvm tools: move kvm_cpus into struct kvm
There's no reason the array of guest specific vcpus is global. Move it into struct kvm.
Also split up arch specific vcpu init from the generic code and call
kvm tools: move kvm_cpus into struct kvm
There's no reason the array of guest specific vcpus is global. Move it into struct kvm.
Also split up arch specific vcpu init from the generic code and call it from the kvm_cpu initializer.
Signed-off-by: Sasha Levin <levinsasha928@gmail.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|
#
42ac24f9 |
| 05-Sep-2012 |
Sasha Levin <levinsasha928@gmail.com> |
kvm tools: split struct kvm into arch specific part
Move all the non-arch specific members into a generic struct, and the arch specific members into a arch specific kvm_arch. This prevents code dupl
kvm tools: split struct kvm into arch specific part
Move all the non-arch specific members into a generic struct, and the arch specific members into a arch specific kvm_arch. This prevents code duplication across different archs.
Signed-off-by: Sasha Levin <levinsasha928@gmail.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|
#
54cb8a31 |
| 04-Jul-2012 |
Michael Ellerman <michael@ellerman.id.au> |
kvm tool: Fix powerpc/kvm-cpu.c for new KVM_SET_ONE_REG API
I think this code was based on an earlier version of the KVM_SET_ONE_REG API, which at the time was in agraf's tree but not mainline?
Eit
kvm tool: Fix powerpc/kvm-cpu.c for new KVM_SET_ONE_REG API
I think this code was based on an earlier version of the KVM_SET_ONE_REG API, which at the time was in agraf's tree but not mainline?
Either way it doesn't compile as is, so fix it up.
Acked-by: Alexander Graf <agraf@suse.de> Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|
#
5e8d833b |
| 04-Feb-2012 |
Matt Evans <matt@ozlabs.org> |
kvm tools: Add PPC64 kvm_cpu__emulate_io()
This is the final piece of the puzzle for PPC SPAPR PCI; this function splits MMIO accesses into the two PHB windows & directs things to MMIO/IO emulation
kvm tools: Add PPC64 kvm_cpu__emulate_io()
This is the final piece of the puzzle for PPC SPAPR PCI; this function splits MMIO accesses into the two PHB windows & directs things to MMIO/IO emulation as appropriate.
Signed-off-by: Matt Evans <matt@ozlabs.org> Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|
#
f17e5a37 |
| 04-Feb-2012 |
Matt Evans <matt@ozlabs.org> |
kvm tools: Add PPC64 XICS interrupt controller support
This patch adds XICS emulation code (heavily borrowed from QEMU), and wires this into kvm_cpu__irq() to fire a CPU IRQ via KVM. A device tree
kvm tools: Add PPC64 XICS interrupt controller support
This patch adds XICS emulation code (heavily borrowed from QEMU), and wires this into kvm_cpu__irq() to fire a CPU IRQ via KVM. A device tree entry is also added. IPIs work, xics_alloc_irqnum() is added to allocate an external IRQ (which will later be used by the PHB PCI code) and finally, kvm__irq_line() can be called to raise an IRQ on XICS.
Signed-off-by: Matt Evans <matt@ozlabs.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|
#
be76823f |
| 04-Feb-2012 |
Matt Evans <matt@ozlabs.org> |
kvm tools: Add SPAPR PPC64 hcall & rtascall structure
This patch adds the basic structure for HV calls, their registration and some of the simpler calls. A similar layout for RTAS calls is also add
kvm tools: Add SPAPR PPC64 hcall & rtascall structure
This patch adds the basic structure for HV calls, their registration and some of the simpler calls. A similar layout for RTAS calls is also added, again with some of the simpler RTAS calls used by the guest. The SPAPR RTAS stub is generated inline. Also, nodes for RTAS are added to the device tree.
Signed-off-by: Matt Evans <matt@ozlabs.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|
#
d391177a |
| 04-Feb-2012 |
Matt Evans <matt@ozlabs.org> |
kvm tools: Generate SPAPR PPC64 guest device tree
The generated DT is the bare minimum structure required for SPAPR (on which subsequent patches for VIO, XICS, PCI etc. will build); root node, cpus,
kvm tools: Generate SPAPR PPC64 guest device tree
The generated DT is the bare minimum structure required for SPAPR (on which subsequent patches for VIO, XICS, PCI etc. will build); root node, cpus, memory.
The DT contains CPU-specific configuration; a very simple 'cpu info' mechanism is added to recognise/differentiate DT entries for POWER7 and PPC970 host CPUs. Future support of more CPUs is possible.
libfdt is included from scripts/dtc/libfdt.
Signed-off-by: Matt Evans <matt@ozlabs.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|
#
df129a0a |
| 04-Feb-2012 |
Matt Evans <matt@ozlabs.org> |
kvm tools: PPC64, add HPT/SDR1 for -PR KVM
Allocate a page table and point SDR1 to it in order to support the -PR PPC64 KVM mode. (The alternative, -HV mode, is available only on a small set of mac
kvm tools: PPC64, add HPT/SDR1 for -PR KVM
Allocate a page table and point SDR1 to it in order to support the -PR PPC64 KVM mode. (The alternative, -HV mode, is available only on a small set of machines.)
This patch also removes the previous dependency on mapping guest RAM with huge pages; PR KVM doesn't require them so the user isn't forced to use them.
A new option, '--hugetlbfs default', uses a default path for 16M pages for HV mode, if required.
Signed-off-by: Matt Evans <matt@ozlabs.org> Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|
#
63e158a0 |
| 13-Dec-2011 |
Matt Evans <matt@ozlabs.org> |
kvm tools: Add initial SPAPR PPC64 architecture support
This patch adds a new arch directory, powerpc, basic file structure, register setup and where necessary stubs out arch-specific functions (e.g
kvm tools: Add initial SPAPR PPC64 architecture support
This patch adds a new arch directory, powerpc, basic file structure, register setup and where necessary stubs out arch-specific functions (e.g. interrupts, runloop exits) that later patches will provide. The target is an SPAPR-compliant PPC64 machine (i.e. pSeries); there is no support for PPC32 or 'bare metal' PPC64 guests as yet. Subsequent patches implement the hcalls and RTAS required to boot SPAPR pSeries kernels.
Memory is mapped from hugetlbfs (as that is currently required by upstream PPC64 HV-mode KVM). The mapping of a VRMA region is yet to be implemented; this is only necessary on processors that don't support VRMA, e.g. <= P6. Work is therefore needed to get this going on pre-P7 CPUs.
Processor state is set up as a guest kernel would expect (both primary and secondaries), and SMP is fully supported.
Finally, support is added for simply loading flat binary kernels (plus initrd). (bzImages are not used on PPC, and this series does not add zImage support or an ELF loader.) The intention is to later support loading firmware such as SLOF.
Signed-off-by: Matt Evans <matt@ozlabs.org> Signed-off-by: Pekka Enberg <penberg@kernel.org>
show more ...
|