Statistics
| Branch: | Revision:

root / hw / ppc @ 9e2c1298

# Date Author Comment
347dd79d 12/14/2012 02:12 pm Alexander Graf

PPC: E500: Generate dt pci irq map dynamically

Today we're hardcoding the PCI interrupt map in the e500 machine file.
Instead, let's write it dynamically so that different machine types
can have different slot properties.

Signed-off-by: Alexander Graf <>

492ec48d 12/14/2012 02:12 pm Alexander Graf

PPC: E500: Move PCI slot information into params

We have a params struct that allows us to expose differences between
e500 machine models. Include PCI slot information there, so we can have
different machines with different PCI slot topology.

Signed-off-by: Alexander Graf <>

3bb7e02a 12/14/2012 02:12 pm Alexander Graf

PPC: E500plat: Make a lot of PCI slots available

The ppce500 machine doesn't have to stick to hardware limitations,
as it's defined as being fully device tree based.

Thus we can change the initial PCI slot ID to 0x1 which gives us a
whopping 31 PCI devices we can support with this machine now!...

9e2c1298 12/14/2012 02:12 pm Alexander Graf

PPC: e500: pci: Export slot2irq calculation

We need the calculation method to get from a PCI slot ID to its respective
interrupt line twice. Once in the internal map function and once when
assembling the device tree.

So let's extract the calculation to a separate function that can be called...

5bac0701 12/14/2012 02:12 pm Alexander Graf

openpic: remove irq_out

The current openpic emulation contains half-ready code for bypass mode.
Remove it, so that when someone wants to finish it they can start from a
clean state.

Signed-off-by: Alexander Graf <>

d0b72631 12/14/2012 02:12 pm Alexander Graf

openpic: convert to qdev

This patch converts the OpenPIC device to qdev. Along the way it
renames the "openpic" target to "raven" and the "mpic" target to
"fsl_mpic_20", to better reflect the actual models they implement.

This way we have a generic OpenPIC device now that can handle...

a911b7a9 12/14/2012 02:12 pm Alexander Graf

PPC: e500: Add MSI support

Now that our interrupt controller supports MSIs, let's expose that feature
to the guest through the device tree!

Signed-off-by: Alexander Graf <>

cdbb912a 12/14/2012 02:12 pm Alexander Graf

mpic: Unify numbering scheme

MPIC interrupt numbers in Linux (device tree) and in QEMU are different,
because QEMU takes the sparseness of the IRQ number space into account.

Remove that cleverness and instead assume a flat number space. This makes
the code easier to understand, because we are actually aligned with Linux...

639e8102 12/14/2012 02:12 pm David Gibson

pseries: Implement PAPR NVRAM

The PAPR specification requires a certain amount of NVRAM, accessed via
RTAS, which we don't currently implement in qemu. This patch addresses
this deficiency, implementing the NVRAM as a VIO device, with some glue to
instantiate it automatically based on a machine option....

dffb1dc2 12/14/2012 02:12 pm Bharat Bhushan

e500: Adding CCSR memory region

All devices are also placed under CCSR memory region.
The CCSR memory region is exported to pci device. The MSI interrupt
generation is the main reason to export the CCSR region to PCI device.
This put the requirement to move mpic under CCSR region, but logically...

3eddc1be 12/14/2012 02:12 pm Bharat Bhushan

Adding BAR0 for e500 PCI controller

PCI Root complex have TYPE-1 configuration header while PCI endpoint
have type-0 configuration header. The type-1 configuration header have
a BAR (BAR0). In Freescale PCI controller BAR0 is used for mapping pci
address space to CCSR address space. This can used for 2 purposes: 1)...

a1bc20df 10/29/2012 12:45 pm Alexander Graf

PPC: e500: Map PIO space into core memory region

On PPC, we don't have PIO. So usually PIO space behind a PCI bridge is
accessible via MMIO. Do this mapping explicitly by mapping the PIO space
of our PCI bus into a memory region that lives in memory space....

59de4f98 10/29/2012 12:45 pm Bharat Bhushan

e500: Fix serial initialization

it was wrongly using serial_hds0 instead of serial_hds1

Signed-off-by: Bharat Bhushan <>
Reviewed-by: Andreas Färber <>
Signed-off-by: Alexander Graf <>

74d042e5 10/29/2012 12:45 pm David Gibson

pseries: Implement qemu initiated shutdowns using EPOW events

At present, using 'system_powerdown' from the monitor or otherwise
instructing qemu to (cleanly) shut down a pseries guest will not work,
because we did not have a method of signalling the shutdown request to the...

a8170e5e 10/23/2012 04:58 pm Avi Kivity

Rename target_phys_addr_t to hwaddr

target_phys_addr_t is unwieldly, violates the C standard (_t suffixes are
reserved) and its purpose doesn't match the name (most target_phys_addr_t
addresses are not target specific). Replace it with a finger-friendly,...

488cb996 10/22/2012 09:26 pm Gerd Hoffmann

serial: split serial.c

Split serial.c into serial.c, serial.h and serial-isa.c. While being at
creating a serial.h header file move the serial prototypes from pc.h to
the new serial.h. The latter leads to s/pc.h/serial.h/ in tons of
boards which just want the serial bits from pc.h...

5f072e1f 10/20/2012 10:53 am Eduardo Habkost

create struct for machine initialization arguments

This should help us to:
- More easily add or remove machine initialization arguments without
having to change every single machine init function;
- More easily make mechanical changes involving the machine init...

71193433 10/05/2012 03:35 am Alexander Graf

fdt: move dumpdtb interpretation code to device_tree.c

The dumpdtb code can be useful in more places than just for e500. Move it
to a generic place.

Signed-off-by: Alexander Graf <>

9dd5eba1 10/05/2012 03:35 am Scott Wood

PPC: e500: increase DTC_LOAD_PAD

An allowance of 5 MiB for BSS is not enough for Linux kernels with certain
debug options enabled (not sure exactly which one caused it, but I'd guess
lockdep). The kernel I ran into this with had a BSS of around 6.4 MB.
...

7e7ec2d2 10/05/2012 03:35 am Scott Wood

PPC: e500: calculate initrd_base like dt_base

While investigating dtb pad issues, I noticed that initrd_base wasn't taking
loadaddr into account the way dt_base was. This seems wrong.

Signed-off-by: Scott Wood <>
Signed-off-by: Alexander Graf <>

fb37c302 10/05/2012 03:35 am Alexander Graf

PPC: e500: Only expose even TLB sizes in initial TLB

When booting our e500 machine, we automatically generate a big TLB entry
in TLB1 that covers all of the code we need to run in there until the guest
can handle its TLB on its own.

However, e500v2 can only handle MAS1.0 sizes. However, we keep our TLB...

7e99826c 08/15/2012 08:43 pm Alexander Graf

Revert "PPC: e500: Use new MPIC dt format"

This reverts commit 518c7fb44f2182cde943dc64f88cb2fd4e4ff6b5. It breaks
new Linux guests with SMP, because IPIs get mapped to large vectors which
our MPIC emulation does not implement.

Conflicts:

hw/ppc/e500.c
4a18e7c9 08/15/2012 08:43 pm Scott Wood

PPC: e500: rename mpc8544ds into generic file

Rename the file (with no changes other than fixing up the header paths)
in preparation for refactoring into a generic e500 platform. Also move
it into the newly created ppc/ directory.

Signed-off-by: Scott Wood <>...

b3305981 08/15/2012 08:43 pm Scott Wood

PPC: e500: change internal references away from mpc8544ds

No functional changes -- machine is still outwardly mpc8544ds.

The references that are not changed contain mpc8544 hardware details that
need to be parameterized if/when a different e500 platform wants to...

e6eaabeb 08/15/2012 08:43 pm Scott Wood

PPC: e500: split mpc8544ds machine from generic e500 code

Currently the only mpc8544ds-ism that is factored out is
toplevel compatible and model. In the future the generic e500
code is expected to become more generic.

Signed-off-by: Scott Wood <>...

4d5c29ca 08/15/2012 08:43 pm Scott Wood

PPC: e500: add generic e500 platform

This gives the kernel a paravirtualized machine to target, without
requiring both sides to pretend to be targeting a specific board
that likely has little to do with the host in KVM scenarios. This
avoids the need to add new boards to QEMU, just to be able to...

ad0ebb91 06/28/2012 12:33 am David Gibson

pseries: Convert sPAPR TCEs to use generic IOMMU infrastructure

The pseries platform already contains an IOMMU implementation, since it is
essential for the platform's paravirtualized VIO devices. This IOMMU
support is currently built into the implementation of the VIO "bus" and...

63397dd0 06/24/2012 02:04 am Alexander Graf

PPC: e500: require libfdt

Now that we're moving all of the device tree generation from an external
pre-execution generated blob to runtime generation using libfdt, we absolutely
must have libfdt around.

This requirement was there before already, as the only way to not require libfdt...

9bbfbb61 06/15/2012 01:44 pm Andreas Färber

hw/xilinx_*: Share Xilinx devices between ppc and microblaze

Speeds up the build.

xilinx_ethlite uses tswap32() and is thus target-dependent.

Signed-off-by: Andreas Färber <>
Signed-off-by: Edgar E. Iglesias <>

7c760cbc 06/09/2012 01:20 pm Andreas Färber

target-ppc: Unbreak kvm_ppc.c build

The file is located in target-ppc/, not hw/.

Signed-off-by: Andreas Färber <>
Cc: Paolo Bonzini <>
Cc: Anthony Liguori <>
Cc: Blue Swirl <>...

49ac9e0a 06/07/2012 10:21 am Paolo Bonzini

build: move device tree to per-target Makefile.objs

Signed-off-by: Paolo Bonzini <>

5e8861a0 06/07/2012 08:17 am Paolo Bonzini

build: move obj-TARGET-y variables to nested Makefile.objs

Also drop duplicate occurrence of device-hotplug.o.

Signed-off-by: Paolo Bonzini <>