From: Yaodong Li <yaodong.li@intel.com>
To: Michal Wajdeczko <michal.wajdeczko@intel.com>,
intel-gfx@lists.freedesktop.org
Cc: Sujaritha Sundaresan <sujaritha.sundaresan@intel.com>
Subject: Re: [PATCH v10 3/7] drm/i915/guc: Implement dynamic GuC WOPCM offset and size
Date: Tue, 13 Feb 2018 12:01:04 -0800 [thread overview]
Message-ID: <dea1a459-b29f-0c8f-2f22-d4967e06e3a5@intel.com> (raw)
In-Reply-To: <op.zeds8zi3xaggs7@mwajdecz-mobl1.ger.corp.intel.com>
On 02/13/2018 07:56 AM, Michal Wajdeczko wrote:
>> +
>> +/* GUC WOPCM offset needs to be 16KB aligned. */
>> +#define GUC_WOPCM_OFFSET_ALIGNMENT (16 << 10)
>> +/* 16KB reserved at the beginning of GuC WOPCM. */
>> +#define GUC_WOPCM_RESERVED (16 << 10)
>> +/* 8KB from GUC_WOPCM_RESERVED is reserved for GuC stack. */
>> +#define GUC_WOPCM_STACK_RESERVED (8 << 10)
>> +/* 24KB at the end of GuC WOPCM is reserved for RC6 CTX on BXT. */
>> +#define BXT_GUC_WOPCM_RC6_CTX_RESERVED (24 << 10)
>
> Hmm, I'm still not convinced that we correctly attach it to "GuC WOPCM".
Can you explain the reason and more about your concerns?
>
> In the result, maybe we should stop focusing on "intel_guc_wopcm" and
> define
> everything as "intel_wopcm" as it was earlier suggested by Joonas.
>
> Then we can define our struct to match diagram above as
>
> struct intel_wopcm {
> u32 size;
> struct {
> u32 base;
> u32 size;
> } guc;
> };
>
Thanks Michal! but I don't think this is quite clean design. two reason:
0) I agree there should be something like intel_wopcm to describe
the overall wopcm info, that what I did in my v1 patch series.
the question is whether we really need it even if we are using
only static wopcm size value? I think it should be more clear to
introduce intel_wopcm as a part of a patch that supports dynamic
wopcm size calculation.
2) the wopcm region (a.k.a partition) is definitely a concept that should
exist at least in uc layer. if we chose not to init uc/guc, it would be
nonsense to init these partitions/info in an intel_wopcm which
attached to
drm_i915_private and we have initialized a part of this struct
(e.g. size).
to make it clean I will insist to have the guc wopcm region (or maybe
the other region info) kept in uc level.
As I said the purpose of this series is to enable dynamic GuC WOPCM offset
and size calculation. it's not targeting any code refactoring and only
serves
as a new feature enabling patch. The design principle of this series was to
provide clear new feature enabling by:
1) align with current code design and implementation.
2) provide correct hardware abstraction.
3) faultlessly enabled these new features. (e.g. dynamic size/offset
calculation)
I think this series is now in a good shape to meet all above targets.
On the other hand, I do agree there always is some room to make our current
code clearer, but what we are talking about is further code refactoring.
Actually, I've already had some ideas of this. e.g. we could have some new
abstractions such as:
struct intel_wopcm {
u32 size;
/*any other global wopcm info*/
}
struct wopcm_region {
u32 reserved; // reserved size in each region
u32 offset; // offset of each region
u32 size; // size of each region
};
struct intel_uc {
struct wopcm_regions regions[];
struct intel_uc_fw fws[];
struct intel_guc guc;
...
}
struct intel_guc_dma {
u32 fw_domains;
lockable_reg size;
lockable_reg offset;
u32 flags; // e.g. loading HuC.
}
guc_dma_init()
guc_dma_hw_init()
guc_dma_xfer()
struct intel_guc {
struct intel_guc_dma guc_dma;
/*other guc objects*/
}
This would provide better software layer abstraction. but what I learned
from the 10 versions code submission is we need make things clear enough to
move forward. The lack of uc level abstraction is probably the reason why we
felt so frustrating about this part of code.
Can we just move forward by aligning to the current code implementation?
since what we need now is enable this new features. and we definitely can
provide more code refactoring patches based on these changes later.
Regards,
-Jackie
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2018-02-13 20:02 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-12 23:45 [PATCH v10 1/7] drm/i915/guc: Move GuC WOPCM related code into separate files Jackie Li
2018-02-12 23:45 ` [PATCH v10 2/7] drm/i915/guc: Rename guc_ggtt_offset to intel_guc_ggtt_offset Jackie Li
2018-02-12 23:45 ` [PATCH v10 3/7] drm/i915/guc: Implement dynamic GuC WOPCM offset and size Jackie Li
2018-02-13 15:56 ` Michal Wajdeczko
2018-02-13 20:01 ` Yaodong Li [this message]
2018-02-13 22:58 ` Michal Wajdeczko
2018-02-14 2:26 ` Yaodong Li
2018-02-14 17:38 ` Michal Wajdeczko
2018-02-14 18:25 ` Yaodong Li
2018-02-12 23:45 ` [PATCH v10 4/7] drm/i915/guc: Add support to return CNL specific reserved GuC WOPCM size Jackie Li
2018-02-12 23:45 ` [PATCH v10 5/7] drm/i915/guc: Add HuC firmware size related restriction for Gen9 and CNL A0 Jackie Li
2018-02-13 16:06 ` Michal Wajdeczko
2018-02-13 21:50 ` Yaodong Li
2018-02-13 22:59 ` Michal Wajdeczko
2018-02-14 0:41 ` Yaodong Li
2018-02-14 17:24 ` Michal Wajdeczko
2018-02-14 18:22 ` Yaodong Li
2018-02-12 23:45 ` [PATCH v10 6/7] drm/i915/guc: Check the locking status of GuC WOPCM registers Jackie Li
2018-02-13 17:39 ` Michal Wajdeczko
2018-02-14 1:18 ` Yaodong Li
2018-02-14 17:07 ` Michal Wajdeczko
2018-02-14 18:31 ` Yaodong Li
2018-02-14 18:42 ` Yaodong Li
2018-02-12 23:45 ` [PATCH v10 7/7] HAX Enable GuC Submission for CI Jackie Li
2018-02-13 0:27 ` ✗ Fi.CI.BAT: failure for series starting with [v10,1/7] drm/i915/guc: Move GuC WOPCM related code into separate files Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=dea1a459-b29f-0c8f-2f22-d4967e06e3a5@intel.com \
--to=yaodong.li@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=michal.wajdeczko@intel.com \
--cc=sujaritha.sundaresan@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox