Skip to content
Snippets Groups Projects
  1. Feb 10, 2021
    • Bin Meng's avatar
      hw/ppc: e500: Use a macro for the platform clock frequency · 0c36ab71
      Bin Meng authored
      
      At present the platform clock frequency is using a magic number.
      Convert it to a macro and use it everywhere.
      
      Signed-off-by: default avatarBin Meng <bin.meng@windriver.com>
      Reviewed-by: default avatarPhilippe Mathieu-Daudé <f4bug@amsat.org>
      
      Message-Id: <1612362288-22216-1-git-send-email-bmeng.cn@gmail.com>
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      0c36ab71
    • Cédric Le Goater's avatar
      ppc/pnv: Set default RAM size to 1 GB · dd7ef911
      Cédric Le Goater authored
      
      The memory layout of the PowerNV machine is defined as :
      
        #define KERNEL_LOAD_BASE	((void *)0x20000000)
        #define KERNEL_LOAD_SIZE	0x08000000
      
        #define INITRAMFS_LOAD_BASE	KERNEL_LOAD_BASE + KERNEL_LOAD_SIZE
        #define INITRAMFS_LOAD_SIZE	0x08000000
      
        #define SKIBOOT_BASE		0x30000000
        #define SKIBOOT_SIZE		0x01c10000
      
        #define CPU_STACKS_BASE	(SKIBOOT_BASE + SKIBOOT_SIZE)
        #define STACK_SHIFT		15
        #define STACK_SIZE		(1 << STACK_SHIFT)
      
      The overall size of the CPU stacks is (max PIR + 1) * 32K and the
      machine easily reaches 800MB of minimum required RAM.
      
      Any value below will result in a skiboot crash :
      
          [    0.034949905,3] MEM: Partial overlap detected between regions:
          [    0.034959039,3] MEM: ibm,firmware-stacks [0x31c10000-0x3a450000] (new)
          [    0.034968576,3] MEM: ibm,firmware-allocs-memory@0 [0x31c10000-0x38400000]
          [    0.034980367,3] Out of memory adding skiboot reserved areas
          [    0.035074945,3] ***********************************************
          [    0.035093627,3] < assert failed at core/mem_region.c:1129 >
          [    0.035104247,3]     .
          [    0.035108025,3]      .
          [    0.035111651,3]       .
          [    0.035115231,3]         OO__)
          [    0.035119198,3]        <"__/
          [    0.035122980,3]         ^ ^
      
      Signed-off-by: default avatarCédric Le Goater <clg@kaod.org>
      Message-Id: <20210129111719.790692-1-clg@kaod.org>
      Reviewed-by: default avatarGreg Kurz <groug@kaod.org>
      Reviewed-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      dd7ef911
  2. Feb 09, 2021
    • Daniel Henrique Barboza's avatar
      spapr_numa.c: fix ibm,max-associativity-domains calculation · b01fec36
      Daniel Henrique Barboza authored
      
      The current logic for calculating 'maxdomain' making it a sum of
      numa_state->num_nodes with spapr->gpu_numa_id. spapr->gpu_numa_id is
      used as a index to determine the next available NUMA id that a
      given NVGPU can use.
      
      The problem is that the initial value of gpu_numa_id, for any topology
      that has more than one NUMA node, is equal to numa_state->num_nodes.
      This means that our maxdomain will always be, at least, twice the
      amount of existing NUMA nodes. This means that a guest with 4 NUMA
      nodes will end up with the following max-associativity-domains:
      
      rtas/ibm,max-associativity-domains
                       00000004 00000008 00000008 00000008 00000008
      
      This overtuning of maxdomains doesn't go unnoticed in the guest, being
      detected in SLUB during boot:
      
       dmesg | grep SLUB
      [    0.000000] SLUB: HWalign=128, Order=0-3, MinObjects=0, CPUs=4, Nodes=8
      
      SLUB is detecting 8 total nodes, with 4 nodes being online.
      
      This patch fixes ibm,max-associativity-domains by considering the amount
      of NVGPUs NUMA nodes presented in the guest, instead of just
      spapr->gpu_numa_id.
      
      Reported-by: default avatarCédric Le Goater <clg@kaod.org>
      Tested-by: default avatarCédric Le Goater <clg@kaod.org>
      Signed-off-by: default avatarDaniel Henrique Barboza <danielhb413@gmail.com>
      Message-Id: <20210128174213.1349181-4-danielhb413@gmail.com>
      Reviewed-by: default avatarGreg Kurz <groug@kaod.org>
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      b01fec36
    • Daniel Henrique Barboza's avatar
      spapr_numa.c: create spapr_numa_initial_nvgpu_numa_id() helper · 66407069
      Daniel Henrique Barboza authored
      
      We'll need to check the initial value given to spapr->gpu_numa_id when
      building the rtas DT, so put it in a helper for easier access and to
      avoid repetition.
      
      Tested-by: default avatarCédric Le Goater <clg@kaod.org>
      Reviewed-by: default avatarGreg Kurz <groug@kaod.org>
      Signed-off-by: default avatarDaniel Henrique Barboza <danielhb413@gmail.com>
      Message-Id: <20210128174213.1349181-3-danielhb413@gmail.com>
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      66407069
    • Daniel Henrique Barboza's avatar
      spapr: move spapr_machine_using_legacy_numa() to spapr_numa.c · 3b880445
      Daniel Henrique Barboza authored
      
      This function is used only in spapr_numa.c.
      
      Tested-by: default avatarCédric Le Goater <clg@kaod.org>
      Reviewed-by: default avatarGreg Kurz <groug@kaod.org>
      Signed-off-by: default avatarDaniel Henrique Barboza <danielhb413@gmail.com>
      Message-Id: <20210128174213.1349181-2-danielhb413@gmail.com>
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      3b880445
    • Cédric Le Goater's avatar
      ppc/pnv: Introduce a LPC FW memory region attribute to map the PNOR · 032c226b
      Cédric Le Goater authored
      
      This to map the PNOR from the machine init handler directly and finish
      the cleanup of the LPC model.
      
      Signed-off-by: default avatarCédric Le Goater <clg@kaod.org>
      Message-Id: <20210126171059.307867-8-clg@kaod.org>
      Reviewed-by: default avatarJoel Stanley <joel@jms.id.au>
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      032c226b
    • Cédric Le Goater's avatar
      ppc/pnv: Remove default disablement of the PNOR contents · 8304ab79
      Cédric Le Goater authored
      
      On PowerNV systems, the BMC is in charge of mapping the PNOR contents
      on the LPC FW address space using the HIOMAP protocol. Under QEMU, we
      emulate this behavior and we also add an extra control on the flash
      accesses by letting the HIOMAP command handler decide whether the
      memory region is accessible or not depending on the firmware requests.
      
      However, this behavior is not compatible with hostboot like firmwares
      which need this mapping to be always available. For this reason, the
      PNOR memory region is initially disabled for skiboot mode only.
      
      This is badly placed under the LPC model and requires the use of the
      machine. Since it doesn't add much, simply remove the initial setting.
      The extra control in the HIOMAP command handler will still be performed.
      
      Signed-off-by: default avatarCédric Le Goater <clg@kaod.org>
      Message-Id: <20210126171059.307867-7-clg@kaod.org>
      Reviewed-by: default avatarJoel Stanley <joel@jms.id.au>
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      8304ab79
    • Cédric Le Goater's avatar
      ppc/pnv: Discard internal BMC initialization when BMC is external · 50ae2452
      Cédric Le Goater authored
      
      The PowerNV machine can be run with an external IPMI BMC device
      connected to a remote QEMU machine acting as BMC, using these options :
      
        -chardev socket,id=ipmi0,host=localhost,port=9002,reconnect=10 \
        -device ipmi-bmc-extern,id=bmc0,chardev=ipmi0 \
        -device isa-ipmi-bt,bmc=bmc0,irq=10 \
        -nodefaults
      
      In that case, some aspects of the BMC initialization should be
      skipped, since they rely on the simulator interface.
      
      Signed-off-by: default avatarCédric Le Goater <clg@kaod.org>
      Message-Id: <20210126171059.307867-6-clg@kaod.org>
      Reviewed-by: default avatarJoel Stanley <joel@jms.id.au>
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      50ae2452
    • Cédric Le Goater's avatar
      ppc/pnv: Simplify pnv_bmc_create() · 60ef8010
      Cédric Le Goater authored
      
      and reuse pnv_bmc_set_pnor() to share the setting of the PNOR.
      
      Signed-off-by: default avatarCédric Le Goater <clg@kaod.org>
      Message-Id: <20210126171059.307867-5-clg@kaod.org>
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      60ef8010
    • Cédric Le Goater's avatar
      ppc/pnv: Use skiboot addresses to load kernel and ramfs · 05ce9b73
      Cédric Le Goater authored
      
      The current settings are useful to load large kernels (with debug) but
      it moves the initrd image in a memory region not protected by
      skiboot. If skiboot is compiled with DEBUG=1, memory poisoning will
      corrupt the initrd.
      
      Cc: Murilo Opsfelder Araujo <muriloo@linux.ibm.com>
      Signed-off-by: default avatarCédric Le Goater <clg@kaod.org>
      Message-Id: <20210126171059.307867-4-clg@kaod.org>
      Reviewed-by: default avatarMurilo Opsfelder Araujo <muriloo@linux.ibm.com>
      Reviewed-by: default avatarJoel Stanley <joel@jms.id.au>
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      05ce9b73
    • Cédric Le Goater's avatar
      ppc/xive: Add firmware bit when dumping the ENDs · cb942864
      Cédric Le Goater authored
      
      ENDs allocated by OPAL for the HW thread VPs are tagged as owned by FW.
      Dump the state in 'info pic'.
      
      Signed-off-by: default avatarCédric Le Goater <clg@kaod.org>
      Message-Id: <20210126171059.307867-3-clg@kaod.org>
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      cb942864
    • Cédric Le Goater's avatar
      ppc/pnv: Add trace events for PCI event notification · 2cfc9f1a
      Cédric Le Goater authored
      
      On POWER9 systems, PHB controllers signal the XIVE interrupt controller
      of a source interrupt notification using a store on a MMIO region. Add
      traces for such events.
      
      Signed-off-by: default avatarCédric Le Goater <clg@kaod.org>
      Message-Id: <20210126171059.307867-2-clg@kaod.org>
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      2cfc9f1a
    • Philippe Mathieu-Daudé's avatar
      target/ppc: Remove unused MMU definitions · 1f38f489
      Philippe Mathieu-Daudé authored
      
      Remove these confusing and unused definitions.
      
      Signed-off-by: default avatarPhilippe Mathieu-Daudé <f4bug@amsat.org>
      Message-Id: <20210127232401.3525126-1-f4bug@amsat.org>
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      1f38f489
    • Greg Kurz's avatar
      spapr: Adjust firmware path of PCI devices · 040bdafc
      Greg Kurz authored
      It is currently not possible to perform a strict boot from USB storage:
      
      $ qemu-system-ppc64 -accel kvm -nodefaults -nographic -serial stdio \
      	-boot strict=on \
      	-device qemu-xhci \
      	-device usb-storage,drive=disk,bootindex=0 \
      	-blockdev driver=file,node-name=disk,filename=fedora-ppc64le.qcow2
      
      SLOF **********************************************************************
      QEMU Starting
       Build Date = Jul 17 2020 11:15:24
       FW Version = git-e18ddad8516ff2cf
       Press "s" to enter Open Firmware.
      
      Populating /vdevice methods
      Populating /vdevice/vty@71000000
      Populating /vdevice/nvram@71000001
      Populating /pci@800000020000000
                           00 0000 (D) : 1b36 000d    serial bus [ usb-xhci ]
      No NVRAM common partition, re-initializing...
      Scanning USB
        XHCI: Initializing
          USB Storage
             SCSI: Looking for devices
                101000000000000 DISK     : "QEMU     QEMU HARDDISK    2.5+"
      Using default console: /vdevice/vty@71000000
      
        Welcome to Open Firmware
      
        Copyright (c) 2004, 2017 IBM Corporation All rights reserved.
        This program and the accompanying materials are made available
        under the terms of the BSD License available at
        http://www.opensource.org/licenses/bsd-license.php
      
      
      
      Trying to load:  from: /pci@800000020000000/usb@0/storage@1/disk@101000000000000 ...
      E3405: No such device
      
      E3407: Load failed
      
        Type 'boot' and press return to continue booting the system.
        Type 'reset-all' and press return to reboot the system.
      
      Ready!
      0 >
      
      The device tree handed over by QEMU to SLOF indeed contains:
      
      qemu,boot-list =
      	"/pci@800000020000000/usb@0/storage@1/disk@101000000000000 HALT";
      
      but the device node is named usb-xhci@0, not usb@0.
      
      This happens because the firmware names of PCI devices returned
      by get_boot_devices_list() come from pcibus_get_fw_dev_path(),
      while the sPAPR PHB code uses a different naming scheme for
      device nodes. This inconsistency has always been there but it was
      hidden for a long time because SLOF used to rename USB device
      nodes, until this commit, merged in QEMU 4.2.0 :
      
      commit 85164ad4
      Author: Alexey Kardashevskiy <aik@ozlabs.ru>
      Date:   Wed Sep 11 16:24:32 2019 +1000
      
          pseries: Update SLOF firmware image
      
          This fixes USB host bus adapter name in the device tree to match QEMU's
          one.
      
      Signed-off-by: default avatarAlexey Kardashevskiy <aik@ozlabs.ru>
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      
      Fortunately, sPAPR implements the firmware path provider interface.
      This provides a way to override the default firmware paths.
      
      Just factor out the sPAPR PHB naming logic from spapr_dt_pci_device()
      to a helper, and use it in the sPAPR firmware path provider hook.
      
      Fixes: 85164ad4 ("pseries: Update SLOF firmware image")
      Signed-off-by: default avatarGreg Kurz <groug@kaod.org>
      Message-Id: <20210122170157.246374-1-groug@kaod.org>
      Reviewed-by: default avatarDaniel Henrique Barboza <danielhb413@gmail.com>
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      040bdafc
    • Daniel Henrique Barboza's avatar
      spapr.c: add 'name' property for hotplugged CPUs nodes · a85bb34e
      Daniel Henrique Barboza authored
      In the CPU hotunplug bug [1] the guest kernel throws a scary
      message in dmesg:
      
      pseries-hotplug-cpu: Failed to offline CPU <NULL>, rc: -16
      
      The reason isn't related to the bug though. This happens because the
      kernel file arch/powerpc/platform/pseries/hotplug-cpu.c, function
      dlpar_cpu_remove(), is not finding the device_node.name of the offending
      CPU.
      
      We're not populating the 'name' property for hotplugged CPUs. Since the
      kernel relies on device_node.name for identifying CPU nodes, and the
      CPUs that are coldplugged has the 'name' property filled by SLOF, this
      is creating an unneeded inconsistency between hotplug and coldplug CPUs
      in the kernel.
      
      Let's fill the 'name' property for hotplugged CPUs as well. This will
      make the guest dmesg throws a less intimidating message when we try to
      unplug the last online CPU:
      
      pseries-hotplug-cpu: Failed to offline CPU PowerPC,POWER9@1, rc: -16
      
      [1] https://bugzilla.redhat.com/1911414
      
      
      
      Signed-off-by: default avatarDaniel Henrique Barboza <danielhb413@gmail.com>
      Message-Id: <20210120232305.241521-3-danielhb413@gmail.com>
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      a85bb34e
    • Daniel Henrique Barboza's avatar
      spapr.c: use g_auto* with 'nodename' in CPU DT functions · 7265bc3e
      Daniel Henrique Barboza authored
      
      Next patch will use the 'nodename' string in spapr_core_dt_populate()
      after the point it's being freed today.
      
      Instead of moving 'g_free(nodename)' around, let's do a QoL change in
      both CPU DT functions where 'nodename' is being freed, and use
      g_autofree to avoid the 'g_free()' call altogether.
      
      Signed-off-by: default avatarDaniel Henrique Barboza <danielhb413@gmail.com>
      Message-Id: <20210120232305.241521-2-danielhb413@gmail.com>
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      7265bc3e
    • Peter Maydell's avatar
      Merge remote-tracking branch 'remotes/nvme/tags/nvme-next-pull-request' into staging · 1214d55d
      Peter Maydell authored
      
      Emulated NVMe device updates
      
        * deallocate or unwritten logical block error feature (me)
        * dataset management command (me)
        * compare command (Gollu Appalanaidu)
        * namespace types (Niklas Cassel)
        * zoned namespaces (Dmitry Fomichev)
        * smart critical warning toggle (Zhenwei Pi)
        * allow cmb and pmr to coexist (me)
        * pmr rds/wds support (Naveen Nagar)
        * cmb v1.4 logic (Padmakar Kalghatgi)
      
      And a lot of smaller fixes from Gollu Appalanaidu and Minwoo Im.
      
      # gpg: Signature made Tue 09 Feb 2021 07:25:18 GMT
      # gpg:                using RSA key 522833AA75E2DCE6A24766C04DE1AF316D4F0DE9
      # gpg: Good signature from "Klaus Jensen <its@irrelevant.dk>" [unknown]
      # gpg:                 aka "Klaus Jensen <k.jensen@samsung.com>" [unknown]
      # gpg: WARNING: This key is not certified with a trusted signature!
      # gpg:          There is no indication that the signature belongs to the owner.
      # Primary key fingerprint: DDCA 4D9C 9EF9 31CC 3468  4272 63D5 6FC5 E55D A838
      #      Subkey fingerprint: 5228 33AA 75E2 DCE6 A247  66C0 4DE1 AF31 6D4F 0DE9
      
      * remotes/nvme/tags/nvme-next-pull-request: (56 commits)
        hw/block/nvme: refactor the logic for zone write checks
        hw/block/nvme: fix zone boundary check for append
        hw/block/nvme: fix wrong parameter name 'cross_read'
        hw/block/nvme: align with existing style
        hw/block/nvme: fix set feature save field check
        hw/block/nvme: fix set feature for error recovery
        hw/block/nvme: error if drive less than a zone size
        hw/block/nvme: lift cmb restrictions
        hw/block/nvme: bump to v1.4
        hw/block/nvme: move cmb logic to v1.4
        hw/block/nvme: add PMR RDS/WDS support
        hw/block/nvme: disable PMR at boot up
        hw/block/nvme: remove redundant zeroing of PMR registers
        hw/block/nvme: rename PMR/CMB shift/mask fields
        hw/block/nvme: allow cmb and pmr to coexist
        hw/block/nvme: move msix table and pba to BAR 0
        hw/block/nvme: indicate CMB support through controller capabilities register
        hw/block/nvme: fix 64 bit register hi/lo split writes
        hw/block/nvme: add size to mmio read/write trace events
        hw/block/nvme: trigger async event during injecting smart warning
        ...
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      1214d55d
    • Peter Maydell's avatar
      Merge remote-tracking branch 'remotes/bonzini-gitlab/tags/for-upstream' into staging · 41d306ec
      Peter Maydell authored
      
      * Fuzzing improvements (Qiuhao, Alexander)
      * i386: Fix BMI decoding for instructions with the 0x66 prefix (David)
      * initial attempt at fixing event_notifier emulation (Maxim)
      * i386: PKS emulation, fix for "qemu-system-i386 -cpu host" (myself)
      * meson: RBD test fixes (myself)
      * meson: TCI warnings (Philippe)
      * Leaner build for --disable-guest-agent, --disable-system and
        --disable-tools (Philippe, Stefan)
      * --enable-tcg-interpreter fix (Richard)
      * i386: SVM feature bits (Wei)
      * KVM bugfix (Thomas H.)
      * Add missing MemoryRegionOps callbacks (PJP)
      
      # gpg: Signature made Mon 08 Feb 2021 14:15:35 GMT
      # gpg:                using RSA key F13338574B662389866C7682BFFBD25F78C7AE83
      # gpg:                issuer "pbonzini@redhat.com"
      # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [full]
      # gpg:                 aka "Paolo Bonzini <pbonzini@redhat.com>" [full]
      # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4  E2F7 7E15 100C CD36 69B1
      #      Subkey fingerprint: F133 3857 4B66 2389 866C  7682 BFFB D25F 78C7 AE83
      
      * remotes/bonzini-gitlab/tags/for-upstream: (46 commits)
        target/i386: Expose VMX entry/exit load pkrs control bits
        target/i386: Add support for save/load IA32_PKRS MSR
        imx7-ccm: add digprog mmio write method
        tz-ppc: add dummy read/write methods
        spapr_pci: add spapr msi read method
        nvram: add nrf51_soc flash read method
        prep: add ppc-parity write method
        vfio: add quirk device write method
        pci-host: designware: add pcie-msi read method
        hw/pci-host: add pci-intack write method
        cpu-throttle: Remove timer_mod() from cpu_throttle_set()
        replay: rng-builtin support
        pc-bios/descriptors: fix paths in json files
        replay: fix replay of the interrupts
        accel/kvm/kvm-all: Fix wrong return code handling in dirty log code
        qapi/meson: Restrict UI module to system emulation and tools
        qapi/meson: Restrict system-mode specific modules
        qapi/meson: Remove QMP from user-mode emulation
        qapi/meson: Restrict qdev code to system-mode emulation
        meson: Restrict emulation code
        ...
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      41d306ec
  3. Feb 08, 2021
Loading