[Intel-gfx] [PATCH v3 5/8] drm/i915: Add the display switch logic for vGPU in i915 driver

Yu, Zhang yu.c.zhang at linux.intel.com
Tue Dec 16 19:17:37 PST 2014



On 12/15/2014 4:16 PM, Daniel Vetter wrote:
> On Thu, Nov 13, 2014 at 08:02:46PM +0800, Yu Zhang wrote:
>> Display switch logic is added to notify the host side that
>> current vGPU have a valid surface to show. It does so by
>> writing the display_ready field in PV INFO page, and then
>> will be handled in the host side. This is useful to avoid
>> trickiness when the VM's framebuffer is being accessed in
>> the middle of VM modesetting, e.g. compositing the framebuffer
>> in the host side.
>>
>> v2:
>> 	- move the notification code outside the 'else' in load sequence
>> 	- remove the notification code in intel_crtc_set_config()
>>
>> Signed-off-by: Yu Zhang <yu.c.zhang at linux.intel.com>
>> Signed-off-by: Jike Song <jike.song at intel.com>
>> Signed-off-by: Zhiyuan Lv <zhiyuan.lv at intel.com>
>> ---
>>   drivers/gpu/drm/i915/i915_dma.c  | 11 +++++++++++
>>   drivers/gpu/drm/i915/i915_vgpu.h |  7 +++++++
>>   2 files changed, 18 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
>> index 9a73533..06daa5c 100644
>> --- a/drivers/gpu/drm/i915/i915_dma.c
>> +++ b/drivers/gpu/drm/i915/i915_dma.c
>> @@ -36,6 +36,7 @@
>>   #include "intel_drv.h"
>>   #include <drm/i915_drm.h>
>>   #include "i915_drv.h"
>> +#include "i915_vgpu.h"
>>   #include "i915_trace.h"
>>   #include <linux/pci.h>
>>   #include <linux/console.h>
>> @@ -1780,6 +1781,16 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
>>   		dev_priv->ums.mm_suspended = 1;
>>   	}
>>
>> +	if (intel_vgpu_active(dev)) {
>> +		/*
>> +		 * Notify a valid surface after modesetting,
>> +		 * when running inside a VM.
>> +		 */
>> +		struct drm_i915_private *dev_priv = to_i915(dev);
>> +
>> +		I915_WRITE(vgtif_reg(display_ready), VGT_DRV_DISPLAY_READY);
>> +	}
>> +
>>   	i915_setup_sysfs(dev);
>>
>>   	if (INTEL_INFO(dev)->num_pipes) {
>> diff --git a/drivers/gpu/drm/i915/i915_vgpu.h b/drivers/gpu/drm/i915/i915_vgpu.h
>> index f538b18..9d35fb8 100644
>> --- a/drivers/gpu/drm/i915/i915_vgpu.h
>> +++ b/drivers/gpu/drm/i915/i915_vgpu.h
>> @@ -80,6 +80,13 @@ struct vgt_if {
>>   #define vgtif_reg(x) \
>>   	(VGT_PVINFO_PAGE + (long)&((struct vgt_if *) NULL)->x)
>>
>> +/* vGPU display status to be used by the host side */
>> +enum vgt_display_status {
>> +	VGT_DRV_DISPLAY_NOT_READY = 0,
>> +	VGT_DRV_DISPLAY_READY,  /* ready for display switch */
>> +};
>
> Nitpick: Since this is a virtual register I prefer we use plain #defines
> with explicit codes for everything instead of enums. Makes it clearer
> which values are used and all that.
> -Daniel
Got it. #define will be used. And I will rebase this patch.
>
Thanks
Yu


More information about the Intel-gfx mailing list