1. 24 9月, 2015 1 次提交
    • P
      intc/gic: Extract some reusable vGIC code · 4b3cfe72
      Pavel Fedin 提交于
      Some functions previously used only by vGICv2 are useful also for vGICv3
      implementation. Untie them from GICState and make accessible from within
      other modules:
      - kvm_arm_gic_set_irq()
      - kvm_gic_supports_attr() - moved to common code and renamed to
        kvm_device_check_attr()
      - kvm_gic_access() - turned into GIC-independent kvm_device_access().
        Data pointer changed to void * because some GICv3 registers are
        64-bit wide
      
      Some of these changes are not used right now, but they will be helpful for
      implementing live migration.
      
      Actually kvm_dist_get() and kvm_dist_put() could also be made reusable, but
      they would require two extra parameters (s->dev_fd and s->num_cpu) as well as
      lots of typecasts of 's' to DeviceState * and back to GICState *. This makes
      the code very ugly so i decided to stop at this point. I tried also an
      approach with making a base class for all possible GICs, but it would contain
      only three variables (dev_fd, cpu_num and irq_num), and accessing them through
      the rest of the code would be again tedious (either ugly casts or qemu-style
      separate object pointer). So i disliked it too.
      Signed-off-by: NPavel Fedin <p.fedin@samsung.com>
      Tested-by: NAshok kumar <ashoks@broadcom.com>
      Reviewed-by: NPeter Maydell <peter.maydell@linaro.org>
      Message-id: 2ef56d1dd64ffb75ed02a10dcdaf605e5b8ff4f8.1441784344.git.p.fedin@samsung.com
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      4b3cfe72
  2. 06 11月, 2013 1 次提交