>-----Original Message----- >From: Tvrtko Ursulin [mailto:tvrtko.ursulin@xxxxxxxxxxxxxxx] >Sent: Friday, March 17, 2017 5:30 PM >To: Zhenyu Wang <zhenyuw@xxxxxxxxxxxxxxx> >Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>; Tvrtko Ursulin ><tursulin@xxxxxxxxxxx>; Intel-gfx@xxxxxxxxxxxxxxxxxxxxx; Ursulin, Tvrtko ><tvrtko.ursulin@xxxxxxxxx>; Li, Weinan Z <weinan.z.li@xxxxxxxxx>; Xu, >Terrence <terrence.xu@xxxxxxxxx> >Subject: Re: [PATCH] drm/i915/vgpu: Neuter forcewakes for VGPU >more thouroughly > > >Hi, > >On 13/03/2017 09:37, Zhenyu Wang wrote: >> On 2017.03.13 09:26:26 +0000, Tvrtko Ursulin wrote: >>> >>> On 10/03/2017 10:09, Chris Wilson wrote: >>>> On Fri, Mar 10, 2017 at 09:57:47AM +0000, Tvrtko Ursulin wrote: >>>>> From: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> >>>>> >>>>> If we avoid initializing forcewake domains when running as a guest, >>>>> and also use gen2 mmio accessors in that case, we can avoid the >>>>> timer traffic and any looping through the forcewake code which is >>>>> currently just so it can end up in the no-op forcewake >>>>> implementation. >>>>> >>>>> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> >>>>> Cc: Weinan Li <weinan.z.li@xxxxxxxxx> >>>>> Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> >>>>> --- >>>>> drivers/gpu/drm/i915/intel_uncore.c | 76 >>>>> +++++++++++++------------------------ >>>>> 1 file changed, 27 insertions(+), 49 deletions(-) >>>>> >>>>> diff --git a/drivers/gpu/drm/i915/intel_uncore.c >>>>> b/drivers/gpu/drm/i915/intel_uncore.c >>>>> index 71b9b387ad04..09f5f02d7901 100644 >>>>> --- a/drivers/gpu/drm/i915/intel_uncore.c >>>>> +++ b/drivers/gpu/drm/i915/intel_uncore.c >>>>> @@ -138,13 +138,6 @@ fw_domains_put(struct drm_i915_private >>>>> *dev_priv, enum forcewake_domains fw_doma } >>>>> >>>>> static void >>>>> -vgpu_fw_domains_nop(struct drm_i915_private *dev_priv, >>>>> - enum forcewake_domains fw_domains) >>>>> -{ >>>>> - /* Guest driver doesn't need to takes care forcewake. */ >>>>> -} >>>>> - >>>>> -static void >>>>> fw_domains_posting_read(struct drm_i915_private *dev_priv) { >>>>> struct intel_uncore_forcewake_domain *d; @@ -1187,7 +1180,7 >@@ >>>>> static void fw_domain_init(struct drm_i915_private *dev_priv, >>>>> >>>>> static void intel_uncore_fw_domains_init(struct drm_i915_private >>>>> *dev_priv) { >>>>> - if (INTEL_INFO(dev_priv)->gen <= 5) >>>>> + if (INTEL_GEN(dev_priv) <= 5 || intel_vgpu_active(dev_priv)) >>>> >>>> Make these separate ifs, they aren't semantically related so be verbose. >>>> >>>>> return; >>>>> >>>>> if (IS_GEN9(dev_priv)) { >>>>> @@ -1273,11 +1266,6 @@ static void >intel_uncore_fw_domains_init(struct drm_i915_private *dev_priv) >>>>> FORCEWAKE, FORCEWAKE_ACK); >>>>> } >>>>> >>>>> - if (intel_vgpu_active(dev_priv)) { >>>>> - dev_priv->uncore.funcs.force_wake_get = >vgpu_fw_domains_nop; >>>>> - dev_priv->uncore.funcs.force_wake_put = >vgpu_fw_domains_nop; >>>>> - } >>>>> - >>>>> /* All future platforms are expected to require complex power gating >*/ >>>>> WARN_ON(dev_priv->uncore.fw_domains == 0); } @@ -1327,22 >>>>> +1315,22 @@ void intel_uncore_init(struct drm_i915_private >*dev_priv) >>>>> dev_priv->uncore.pmic_bus_access_nb.notifier_call = >>>>> i915_pmic_bus_access_notifier; >>>>> >>>>> - switch (INTEL_INFO(dev_priv)->gen) { >>>>> - default: >>>>> - case 9: >>>>> - ASSIGN_FW_DOMAINS_TABLE(__gen9_fw_ranges); >>>>> - ASSIGN_WRITE_MMIO_VFUNCS(fwtable); >>>>> - ASSIGN_READ_MMIO_VFUNCS(fwtable); >>>>> - if (HAS_DECOUPLED_MMIO(dev_priv)) { >>>>> - dev_priv->uncore.funcs.mmio_readl = >>>>> - gen9_decoupled_read32; >>>>> - dev_priv->uncore.funcs.mmio_readq = >>>>> - gen9_decoupled_read64; >>>>> - dev_priv->uncore.funcs.mmio_writel = >>>>> - gen9_decoupled_write32; >>>>> + if (IS_GEN(dev_priv, 2, 4) || intel_vgpu_active(dev_priv)) { >>>> >>>> Ok, this doesn't look too bad. >>>> >>>> Do the gvt-g hosts in CI now provide coverage for us of vgpu paths? >>> >>> No idea. >>> >>> Adding Zhenyu. So this patch avoids burning CPU cycles in guests and >>> scheduling timers when all of that ends up in the dummy/no-op >>> forcewake implementation. >>> >>> If interesting to you, would it be easy for you to test it or how >>> should we proceed? >>> >> >> Patch looks fine to me. I can apply it for our QA testing if required. > >Were you perhaps able to smoke test this one? Hi Ursulin, we have verified your patch in guest, no regression be found. Tested-by: Terrence Xu <terrence.xu@xxxxxxxxx> >Regards, > >Tvrtko _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx