1. 13 6月, 2017 3 次提交
  2. 25 4月, 2017 1 次提交
    • K
      hw/arm/exynos: Add generic SDHCI devices · d77b71c2
      Krzysztof Kozlowski 提交于
      Exynos4210 has four SD/MMC controllers supporting:
       - SD Standard Host Specification Version 2.0,
       - MMC Specification Version 4.3,
       - SDIO Card Specification Version 2.0,
       - DMA and ADMA.
      
      Add emulation of SDHCI devices which allows accessing storage through SD
      cards. Differences from real hardware:
       - Devices are shipped with eMMC memory, not SD card.
       - The Exynos4210 SDHCI has few more registers, e.g. for
         controlling the clocks, additional status (0x80, 0x84, 0x8c). These
         are not implemented.
      
      Testing on smdkc210 machine with "-drive file=FILE,if=sd,bus=0,index=2".
      Signed-off-by: NKrzysztof Kozlowski <krzk@kernel.org>
      Message-id: 20170422190709.8676-1-krzk@kernel.org
      Reviewed-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      d77b71c2
  3. 28 2月, 2017 2 次提交
    • K
      hw/arm/exynos: Fix proper mapping of CPUs by providing real cluster ID · f3a6339a
      Krzysztof Kozlowski 提交于
      The Exynos4210 has cluster ID 0x9 in its MPIDR register (raw value
      0x8000090x).  If this cluster ID is not provided, then Linux kernel
      cannot map DeviceTree nodes to MPIDR values resulting in kernel
      warning and lack of any secondary CPUs:
      
          DT missing boot CPU MPIDR[23:0], fall back to default cpu_logical_map
          ...
          smp: Bringing up secondary CPUs ...
          smp: Brought up 1 node, 1 CPU
          SMP: Total of 1 processors activated (24.00 BogoMIPS).
      
      Provide a cluster ID so Linux will see proper MPIDR and will try to
      bring the secondary CPU online.
      Signed-off-by: NKrzysztof Kozlowski <krzk@kernel.org>
      Message-id: 20170226200142.31169-2-krzk@kernel.org
      Reviewed-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      f3a6339a
    • K
      hw/arm/exynos: Fix Linux kernel division by zero for PLLs · 1e0228fd
      Krzysztof Kozlowski 提交于
      Without any clock controller, the Linux kernel was hitting division by
      zero during boot or with clk_summary:
      [    0.000000] [<c031054c>] (unwind_backtrace) from [<c030ba6c>] (show_stack+0x10/0x14)
      [    0.000000] [<c030ba6c>] (show_stack) from [<c05b2660>] (dump_stack+0x88/0x9c)
      [    0.000000] [<c05b2660>] (dump_stack) from [<c05b11a4>] (Ldiv0+0x8/0x10)
      [    0.000000] [<c05b11a4>] (Ldiv0) from [<c06ad1e0>] (samsung_pll45xx_recalc_rate+0x58/0x74)
      [    0.000000] [<c06ad1e0>] (samsung_pll45xx_recalc_rate) from [<c0692ec0>] (clk_register+0x39c/0x63c)
      [    0.000000] [<c0692ec0>] (clk_register) from [<c125d360>] (samsung_clk_register_pll+0x2e0/0x3d4)
      [    0.000000] [<c125d360>] (samsung_clk_register_pll) from [<c125d7e8>] (exynos4_clk_init+0x1b0/0x5e4)
      [    0.000000] [<c125d7e8>] (exynos4_clk_init) from [<c12335f4>] (of_clk_init+0x17c/0x210)
      [    0.000000] [<c12335f4>] (of_clk_init) from [<c1204700>] (time_init+0x24/0x2c)
      [    0.000000] [<c1204700>] (time_init) from [<c1200b2c>] (start_kernel+0x24c/0x38c)
      [    0.000000] [<c1200b2c>] (start_kernel) from [<4020807c>] (0x4020807c)
      
      Provide stub for clock controller returning reset values for PLLs.
      Signed-off-by: NKrzysztof Kozlowski <krzk@kernel.org>
      Message-id: 20170226200142.31169-1-krzk@kernel.org
      Reviewed-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      1e0228fd
  4. 23 3月, 2016 2 次提交
    • P
      hw: explicitly include qemu-common.h and cpu.h · 4771d756
      Paolo Bonzini 提交于
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      4771d756
    • M
      include/qemu/osdep.h: Don't include qapi/error.h · da34e65c
      Markus Armbruster 提交于
      Commit 57cb38b3 included qapi/error.h into qemu/osdep.h to get the
      Error typedef.  Since then, we've moved to include qemu/osdep.h
      everywhere.  Its file comment explains: "To avoid getting into
      possible circular include dependencies, this file should not include
      any other QEMU headers, with the exceptions of config-host.h,
      compiler.h, os-posix.h and os-win32.h, all of which are doing a
      similar job to this file and are under similar constraints."
      qapi/error.h doesn't do a similar job, and it doesn't adhere to
      similar constraints: it includes qapi-types.h.  That's in excess of
      100KiB of crap most .c files don't actually need.
      
      Add the typedef to qemu/typedefs.h, and include that instead of
      qapi/error.h.  Include qapi/error.h in .c files that need it and don't
      get it now.  Include qapi-types.h in qom/object.h for uint16List.
      
      Update scripts/clean-includes accordingly.  Update it further to match
      reality: replace config.h by config-target.h, add sysemu/os-posix.h,
      sysemu/os-win32.h.  Update the list of includes in the qemu/osdep.h
      comment quoted above similarly.
      
      This reduces the number of objects depending on qapi/error.h from "all
      of them" to less than a third.  Unfortunately, the number depending on
      qapi-types.h shrinks only a little.  More work is needed for that one.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      [Fix compilation without the spice devel packages. - Paolo]
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      da34e65c
  5. 19 1月, 2016 1 次提交
  6. 13 1月, 2016 1 次提交
    • M
      Use error_fatal to simplify obvious fatal errors · 007b0657
      Markus Armbruster 提交于
      Done with this Coccinelle semantic patch:
      
          @@
          type T;
          identifier FUN, RET;
          expression list ARGS;
          expression ERR, EC;
          @@
          (
          -    T RET = FUN(ARGS, &ERR);
          +    T RET = FUN(ARGS, &error_fatal);
          |
          -    RET = FUN(ARGS, &ERR);
          +    RET = FUN(ARGS, &error_fatal);
          |
          -    FUN(ARGS, &ERR);
          +    FUN(ARGS, &error_fatal);
          )
          -    if (ERR != NULL) {
          -        error_report_err(ERR);
          -        exit(EC);
          -    }
      
      This is actually a more elegant version of my initial semantic patch
      by courtesy of Eduardo.
      
      It leaves dead Error * variables behind, cleaned up manually.
      
      Cc: qemu-arm@nongnu.org
      Cc: "Michael S. Tsirkin" <mst@redhat.com>
      Cc: Eduardo Habkost <ehabkost@redhat.com>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NEduardo Habkost <ehabkost@redhat.com>
      007b0657
  7. 18 9月, 2015 1 次提交
    • M
      Fix bad error handling after memory_region_init_ram() · f8ed85ac
      Markus Armbruster 提交于
      Symptom:
      
          $ qemu-system-x86_64 -m 10000000
          Unexpected error in ram_block_add() at /work/armbru/qemu/exec.c:1456:
          upstream-qemu: cannot set up guest memory 'pc.ram': Cannot allocate memory
          Aborted (core dumped)
      
      Root cause: commit ef701d7b screwed up handling of out-of-memory
      conditions.  Before the commit, we report the error and exit(1), in
      one place, ram_block_add().  The commit lifts the error handling up
      the call chain some, to three places.  Fine.  Except it uses
      &error_abort in these places, changing the behavior from exit(1) to
      abort(), and thus undoing the work of commit 39228250 "exec: Don't
      abort when we can't allocate guest memory".
      
      The three places are:
      
      * memory_region_init_ram()
      
        Commit 49946538 (right after commit ef701d7b) lifted the error
        handling further, through memory_region_init_ram(), multiplying the
        incorrect use of &error_abort.  Later on, imitation of existing
        (bad) code may have created more.
      
      * memory_region_init_ram_ptr()
      
        The &error_abort is still there.
      
      * memory_region_init_rom_device()
      
        Doesn't need fixing, because commit 33e0eb52 (soon after commit
        ef701d7b) lifted the error handling further, and in the process
        changed it from &error_abort to passing it up the call chain.
        Correct, because the callers are realize() methods.
      
      Fix the error handling after memory_region_init_ram() with a
      Coccinelle semantic patch:
      
          @r@
          expression mr, owner, name, size, err;
          position p;
          @@
                  memory_region_init_ram(mr, owner, name, size,
          (
          -                              &error_abort
          +                              &error_fatal
          |
                                         err@p
          )
                                        );
          @script:python@
              p << r.p;
          @@
          print "%s:%s:%s" % (p[0].file, p[0].line, p[0].column)
      
      When the last argument is &error_abort, it gets replaced by
      &error_fatal.  This is the fix.
      
      If the last argument is anything else, its position is reported.  This
      lets us check the fix is complete.  Four positions get reported:
      
      * ram_backend_memory_alloc()
      
        Error is passed up the call chain, ultimately through
        user_creatable_complete().  As far as I can tell, it's callers all
        handle the error sanely.
      
      * fsl_imx25_realize(), fsl_imx31_realize(), dp8393x_realize()
      
        DeviceClass.realize() methods, errors handled sanely further up the
        call chain.
      
      We're good.  Test case again behaves:
      
          $ qemu-system-x86_64 -m 10000000
          qemu-system-x86_64: cannot set up guest memory 'pc.ram': Cannot allocate memory
          [Exit 1 ]
      
      The next commits will repair the rest of commit ef701d7b's damage.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Message-Id: <1441983105-26376-3-git-send-email-armbru@redhat.com>
      Reviewed-by: NPeter Crosthwaite <crosthwaite.peter@gmail.com>
      f8ed85ac
  8. 18 2月, 2015 1 次提交
  9. 23 12月, 2014 1 次提交
  10. 09 9月, 2014 1 次提交
  11. 18 3月, 2014 1 次提交
  12. 14 2月, 2014 1 次提交
  13. 20 8月, 2013 1 次提交
  14. 04 7月, 2013 1 次提交
  15. 04 6月, 2013 2 次提交
  16. 15 4月, 2013 1 次提交
  17. 09 4月, 2013 1 次提交
    • P
      hw: move headers to include/ · 0d09e41a
      Paolo Bonzini 提交于
      Many of these should be cleaned up with proper qdev-/QOM-ification.
      Right now there are many catch-all headers in include/hw/ARCH depending
      on cpu.h, and this makes it necessary to compile these files per-target.
      However, fixing this does not belong in these patches.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      0d09e41a
  18. 01 3月, 2013 2 次提交
  19. 22 1月, 2013 1 次提交
  20. 07 1月, 2013 1 次提交
  21. 19 12月, 2012 1 次提交
  22. 11 12月, 2012 1 次提交
    • P
      hw/arm_boot, exynos4210, highbank: Fix secondary boot GIC init · bf471f79
      Peter Maydell 提交于
      Fix the code in the secondary CPU boot stubs so that it correctly
      initialises the GIC rather than relying on bugs or implementation
      dependent aspects of the QEMU GIC implementation:
       * set the GIC_PMR.Priority field to all-ones, so that all
         interrupts are passed through. The default of all-zeroes
         means all interrupts are masked, and QEMU only booted because
         of a bug in the priority masking in our GIC implementation.
       * add a barrier after GIC setup and before WFI to ensure that
         GIC config is complete before we go into a possible low power
         state. This isn't needed with the software GIC model but could
         be required when using KVM and executing this code on the
         real hardware CPU.
      
      Note that of the three secondary stub implementations, only
      the common generic one needs to support both v6 and v7 DSB
      encodings; highbank and exynos4210 will always be v7 CPUs.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NIgor Mitsyanko <i.mitsyanko@samsung.com>
      bf471f79
  23. 20 7月, 2012 1 次提交
  24. 04 7月, 2012 2 次提交
  25. 19 6月, 2012 1 次提交
  26. 11 6月, 2012 3 次提交
  27. 13 4月, 2012 1 次提交
  28. 17 2月, 2012 4 次提交