mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-09 02:24:58 -06:00
target-arm queue:
* Implement fp16 support for AArch32 VFP and Neon * hw/arm/sbsa-ref: add "reg" property to DT cpu nodes * hw/arm/sbsa-ref : Add embedded controller in secure memory -----BEGIN PGP SIGNATURE----- iQJNBAABCAA3FiEE4aXFk81BneKOgxXPPCUl7RQ2DN4FAl9OZgMZHHBldGVyLm1h eWRlbGxAbGluYXJvLm9yZwAKCRA8JSXtFDYM3uRfD/4kjn9wRlcHJkFYajL6nk1f 6CI8CAeb6Fv2+snzcDfbutqC1jdL2V9qeojsq6K1L/k59rQgOlBJNJCWNB06KLWq /kbmK6Wa0jTscMTf2Kzo5USUFK9TckrHcpAzAYzPTtJdIVDZOJ01npmaxwRvoQ5V D84VVfKs73Pkpn1PwBVAVpOjn3VeE01vK+A+71kj0Jo9cPoyzqL/ObmJmjVI1MjP aEMRHDvQLl+Co59jjWYOWKyAEPhofo9mDVmCjDapHGppeAWH6E81AJYF6sG8K08Y VJutzsJbe9o9limkVzAGj2Z/i5lFCyX49NL0YBUO2iwDpNd2ijxDUUy+s4rLGyMK ehkgFjXp7qm91R5RAf/xkBtvTbEbQm/tbyYxGdnjN/Vpknpl1hk9O0QW6ItOqZUC FGZbvzn1fdT4xG7bWsaFmy1fwX8nwLPmCeKclQlnpGaBoai9b1Xu/au8QUku82Kb lNfhJeJLe8UiQvNHXmMZvDYGHIICAQApmuPEPjspsAmHYIJWWVPtq18A3Ac8jZ3a D1dq7sZqPD/7Lwl9Bci0froAioUhgaJgT4WCv4irhzpRjvz5ftN4D+iq41edoTQb XGLabaj9cXQqYD87uSB42+aHlCq3a+i+FOrh/NDKZb/tn8eaT/IKjSkl1LF6lbu/ 8yyMd3mncxFtRxtN9t1AXw== =NZ+q -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20200901' into staging target-arm queue: * Implement fp16 support for AArch32 VFP and Neon * hw/arm/sbsa-ref: add "reg" property to DT cpu nodes * hw/arm/sbsa-ref : Add embedded controller in secure memory # gpg: Signature made Tue 01 Sep 2020 16:17:23 BST # gpg: using RSA key E1A5C593CD419DE28E8315CF3C2525ED14360CDE # gpg: issuer "peter.maydell@linaro.org" # gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>" [ultimate] # gpg: aka "Peter Maydell <pmaydell@gmail.com>" [ultimate] # gpg: aka "Peter Maydell <pmaydell@chiark.greenend.org.uk>" [ultimate] # Primary key fingerprint: E1A5 C593 CD41 9DE2 8E83 15CF 3C25 25ED 1436 0CDE * remotes/pmaydell/tags/pull-target-arm-20200901: (47 commits) hw/arm/sbsa-ref : Add embedded controller in secure memory hw/misc/sbsa_ec : Add an embedded controller for sbsa-ref hw/arm/sbsa-ref: add "reg" property to DT cpu nodes target/arm: Enable FP16 in '-cpu max' target/arm: Implement fp16 for Neon VMUL, VMLA, VMLS target/arm/vec_helper: Add gvec fp indexed multiply-and-add operations target/arm/vec_helper: Handle oprsz less than 16 bytes in indexed operations target/arm: Implement fp16 for Neon VRINTX target/arm: Implement fp16 for Neon VRINT-with-specified-rounding-mode target/arm: Implement fp16 for Neon VCVT with rounding modes target/arm: Implement fp16 for Neon VCVT fixed-point target/arm: Convert Neon VCVT fixed-point to gvec target/arm: Implement fp16 for Neon float-integer VCVT target/arm: Implement fp16 for Neon pairwise fp ops target/arm: Implement fp16 for Neon VRSQRTS target/arm: Implement fp16 for Neon VRECPS target/arm: Implement fp16 for Neon fp compare-vs-0 target/arm: Implement fp16 for Neon VFMA, VMFS target/arm: Implement fp16 for Neon VMLA, VMLS operations target/arm: Implement fp16 for Neon VMAXNM, VMINNM ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
8d90bfc5c3
16 changed files with 1819 additions and 801 deletions
|
@ -62,6 +62,7 @@ enum {
|
|||
SBSA_CPUPERIPHS,
|
||||
SBSA_GIC_DIST,
|
||||
SBSA_GIC_REDIST,
|
||||
SBSA_SECURE_EC,
|
||||
SBSA_SMMU,
|
||||
SBSA_UART,
|
||||
SBSA_RTC,
|
||||
|
@ -107,6 +108,7 @@ static const MemMapEntry sbsa_ref_memmap[] = {
|
|||
[SBSA_CPUPERIPHS] = { 0x40000000, 0x00040000 },
|
||||
[SBSA_GIC_DIST] = { 0x40060000, 0x00010000 },
|
||||
[SBSA_GIC_REDIST] = { 0x40080000, 0x04000000 },
|
||||
[SBSA_SECURE_EC] = { 0x50000000, 0x00001000 },
|
||||
[SBSA_UART] = { 0x60000000, 0x00001000 },
|
||||
[SBSA_RTC] = { 0x60010000, 0x00001000 },
|
||||
[SBSA_GPIO] = { 0x60020000, 0x00001000 },
|
||||
|
@ -138,6 +140,12 @@ static const int sbsa_ref_irqmap[] = {
|
|||
[SBSA_EHCI] = 11,
|
||||
};
|
||||
|
||||
static uint64_t sbsa_ref_cpu_mp_affinity(SBSAMachineState *sms, int idx)
|
||||
{
|
||||
uint8_t clustersz = ARM_DEFAULT_CPUS_PER_CLUSTER;
|
||||
return arm_cpu_mp_affinity(idx, clustersz);
|
||||
}
|
||||
|
||||
/*
|
||||
* Firmware on this machine only uses ACPI table to load OS, these limited
|
||||
* device tree nodes are just to let firmware know the info which varies from
|
||||
|
@ -183,14 +191,31 @@ static void create_fdt(SBSAMachineState *sms)
|
|||
g_free(matrix);
|
||||
}
|
||||
|
||||
/*
|
||||
* From Documentation/devicetree/bindings/arm/cpus.yaml
|
||||
* On ARM v8 64-bit systems this property is required
|
||||
* and matches the MPIDR_EL1 register affinity bits.
|
||||
*
|
||||
* * If cpus node's #address-cells property is set to 2
|
||||
*
|
||||
* The first reg cell bits [7:0] must be set to
|
||||
* bits [39:32] of MPIDR_EL1.
|
||||
*
|
||||
* The second reg cell bits [23:0] must be set to
|
||||
* bits [23:0] of MPIDR_EL1.
|
||||
*/
|
||||
qemu_fdt_add_subnode(sms->fdt, "/cpus");
|
||||
qemu_fdt_setprop_cell(sms->fdt, "/cpus", "#address-cells", 2);
|
||||
qemu_fdt_setprop_cell(sms->fdt, "/cpus", "#size-cells", 0x0);
|
||||
|
||||
for (cpu = sms->smp_cpus - 1; cpu >= 0; cpu--) {
|
||||
char *nodename = g_strdup_printf("/cpus/cpu@%d", cpu);
|
||||
ARMCPU *armcpu = ARM_CPU(qemu_get_cpu(cpu));
|
||||
CPUState *cs = CPU(armcpu);
|
||||
uint64_t mpidr = sbsa_ref_cpu_mp_affinity(sms, cpu);
|
||||
|
||||
qemu_fdt_add_subnode(sms->fdt, nodename);
|
||||
qemu_fdt_setprop_u64(sms->fdt, nodename, "reg", mpidr);
|
||||
|
||||
if (ms->possible_cpus->cpus[cs->cpu_index].props.has_node_id) {
|
||||
qemu_fdt_setprop_cell(sms->fdt, nodename, "numa-node-id",
|
||||
|
@ -585,6 +610,16 @@ static void *sbsa_ref_dtb(const struct arm_boot_info *binfo, int *fdt_size)
|
|||
return board->fdt;
|
||||
}
|
||||
|
||||
static void create_secure_ec(MemoryRegion *mem)
|
||||
{
|
||||
hwaddr base = sbsa_ref_memmap[SBSA_SECURE_EC].base;
|
||||
DeviceState *dev = qdev_new("sbsa-ec");
|
||||
SysBusDevice *s = SYS_BUS_DEVICE(dev);
|
||||
|
||||
memory_region_add_subregion(mem, base,
|
||||
sysbus_mmio_get_region(s, 0));
|
||||
}
|
||||
|
||||
static void sbsa_ref_init(MachineState *machine)
|
||||
{
|
||||
unsigned int smp_cpus = machine->smp.cpus;
|
||||
|
@ -708,6 +743,8 @@ static void sbsa_ref_init(MachineState *machine)
|
|||
|
||||
create_pcie(sms);
|
||||
|
||||
create_secure_ec(secure_sysmem);
|
||||
|
||||
sms->bootinfo.ram_size = machine->ram_size;
|
||||
sms->bootinfo.nb_cpus = smp_cpus;
|
||||
sms->bootinfo.board_id = -1;
|
||||
|
@ -717,12 +754,6 @@ static void sbsa_ref_init(MachineState *machine)
|
|||
arm_load_kernel(ARM_CPU(first_cpu), machine, &sms->bootinfo);
|
||||
}
|
||||
|
||||
static uint64_t sbsa_ref_cpu_mp_affinity(SBSAMachineState *sms, int idx)
|
||||
{
|
||||
uint8_t clustersz = ARM_DEFAULT_CPUS_PER_CLUSTER;
|
||||
return arm_cpu_mp_affinity(idx, clustersz);
|
||||
}
|
||||
|
||||
static const CPUArchIdList *sbsa_ref_possible_cpu_arch_ids(MachineState *ms)
|
||||
{
|
||||
unsigned int max_cpus = ms->smp.max_cpus;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue