On 9 September 2015 at 08:49, Pavel Fedin <p.fe...@samsung.com> wrote: > 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: Pavel Fedin <p.fe...@samsung.com> > Tested-by: Ashok kumar <ash...@broadcom.com>
Reviewed-by: Peter Maydell <peter.mayd...@linaro.org> thanks -- PMM