forked from lemonjesus/qemu-ipod-nano
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'ppc-for-upstream' of git://repo.or.cz/qemu/agraf
* 'ppc-for-upstream' of git://repo.or.cz/qemu/agraf: (72 commits) PPC: BookE206: Bump MAS2 to 64bit PPC: BookE: Support 32 and 64 bit wide MAS2 PPC: Extract SPR dump generation into its own function PPC: Add e5500 CPU target PPC: BookE: Make ivpr selectable by CPU type PPC: BookE: Implement EPR SPR PPC: Add support for MSR_CM PPC: Add some booke SPR defines uImage: increase the gzip load size PPC: e500: allow users to set the /compatible property via -machine dt: make setprop argument static PPC: e500: Refactor serial dt generation dt: Add global option to set phandle start offset PPC: e500: Extend address/size of / to 64bit PPC: e500: Define addresses as always 64bit PPC: e500: Use new SOC dt format PPC: e500: Use new MPIC dt format Revert "dt: temporarily disable subtree creation failure check" PPC: e500: enable manual loading of dtb blob PPC: e500: dt: use target_phys_addr_t for ramsize ...
- Loading branch information
Showing
35 changed files
with
9,858 additions
and
8,463 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
When used with the "pseries" machine type, QEMU-system-ppc64 implements | ||
a set of hypervisor calls using a subset of the server "PAPR" specification | ||
(IBM internal at this point), which is also what IBM's proprietary hypervisor | ||
adheres too. | ||
|
||
The subset is selected based on the requirements of Linux as a guest. | ||
|
||
In addition to those calls, we have added our own private hypervisor | ||
calls which are mostly used as a private interface between the firmware | ||
running in the guest and QEMU. | ||
|
||
All those hypercalls start at hcall number 0xf000 which correspond | ||
to a implementation specific range in PAPR. | ||
|
||
- H_RTAS (0xf000) | ||
|
||
RTAS is a set of runtime services generally provided by the firmware | ||
inside the guest to the operating system. It predates the existence | ||
of hypervisors (it was originally an extension to Open Firmware) and | ||
is still used by PAPR to provide various services that aren't performance | ||
sensitive. | ||
|
||
We currently implement the RTAS services in QEMU itself. The actual RTAS | ||
"firmware" blob in the guest is a small stub of a few instructions which | ||
calls our private H_RTAS hypervisor call to pass the RTAS calls to QEMU. | ||
|
||
Arguments: | ||
|
||
r3 : H_RTAS (0xf000) | ||
r4 : Guest physical address of RTAS parameter block | ||
|
||
Returns: | ||
|
||
H_SUCCESS : Successully called the RTAS function (RTAS result | ||
will have been stored in the parameter block) | ||
H_PARAMETER : Unknown token | ||
|
||
- H_LOGICAL_MEMOP (0xf001) | ||
|
||
When the guest runs in "real mode" (in powerpc lingua this means | ||
with MMU disabled, ie guest effective == guest physical), it only | ||
has access to a subset of memory and no IOs. | ||
|
||
PAPR provides a set of hypervisor calls to perform cachable or | ||
non-cachable accesses to any guest physical addresses that the | ||
guest can use in order to access IO devices while in real mode. | ||
|
||
This is typically used by the firmware running in the guest. | ||
|
||
However, doing a hypercall for each access is extremely inefficient | ||
(even more so when running KVM) when accessing the frame buffer. In | ||
that case, things like scrolling become unusably slow. | ||
|
||
This hypercall allows the guest to request a "memory op" to be applied | ||
to memory. The supported memory ops at this point are to copy a range | ||
of memory (supports overlap of source and destination) and XOR which | ||
is used by our SLOF firmware to invert the screen. | ||
|
||
Arguments: | ||
|
||
r3: H_LOGICAL_MEMOP (0xf001) | ||
r4: Guest physical address of destination | ||
r5: Guest physical address of source | ||
r6: Individual element size | ||
0 = 1 byte | ||
1 = 2 bytes | ||
2 = 4 bytes | ||
3 = 8 bytes | ||
r7: Number of elements | ||
r8: Operation | ||
0 = copy | ||
1 = xor | ||
|
||
Returns: | ||
|
||
H_SUCCESS : Success | ||
H_PARAMETER : Invalid argument | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.