All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@intel.com>
To: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>,
	Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Intel-gfx@lists.freedesktop.org, Michael Cheng <michael.cheng@intel.com>
Subject: Re: [Intel-gfx] [RFC 0/2] Compile out integrated
Date: Wed, 02 Feb 2022 14:41:12 +0200	[thread overview]
Message-ID: <874k5htp93.fsf@intel.com> (raw)
In-Reply-To: <332c5305-9810-0b82-a95b-86b5940b8a55@linux.intel.com>

On Wed, 02 Feb 2022, Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> wrote:
> On 02/02/2022 11:20, Jani Nikula wrote:
>> On Wed, 02 Feb 2022, Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> wrote:
>>> On 01/02/2022 17:28, Lucas De Marchi wrote:
>>>> On Tue, Feb 01, 2022 at 07:09:14PM +0200, Jani Nikula wrote:
>>>>> On Tue, 01 Feb 2022, Lucas De Marchi <lucas.demarchi@intel.com> wrote:
>>>>>> On Tue, Feb 01, 2022 at 11:15:31AM +0000, Tvrtko Ursulin wrote:
>>>>>>> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>>>>>>>
>>>>>>> Quicky and dirty hack based on some old ideas. Thought maybe the
>>>>>>> approach might
>>>>>>> interest the Arm port guys. But with IS_GEN_RANGE removed easy gains
>>>>>>> are not so
>>>>>>> big so meh.. Maybe some more easy wins with IS_DISPLAY_VER but I
>>>>>>> haven't looked
>>>>>>> into that side.
>>>>>>>
>>>>>>> 3884664  449681    6720 4341065  423d49 i915.ko.tip
>>>>>>> 3599989  429034    6688 4035711  3d947f i915.ko.noigp
>>>>>>
>>>>>> By these numbers probably it's hard to justify. Another thing to
>>>>>> consider
>>>>>> is that it's very common to have on the same system both
>>>>>> integrated and discrete - doing this would remove at compile time any
>>>>>> chance of driving the integrated one.
>>>>>
>>>>> I guess the point was, the arm systems won't have integrated, and it's
>>>>> anyway going to be a separate build.
>>>>
>>>> so probably the focus and argument here should not be about size
>>>> reduction. From patch 1 I see:
>>>>
>>>> +config DRM_I915_INTEGRATED_GPU_SUPPORT
>>>> +       bool "Support integrated GPUs"
>>>> +       default y
>>>> +       depends on DRM_I915
>>>> +       help
>>>> +         Include support for integrated GPUs.
>>>>
>>>> If it's something that depends on arch rather than providing an
>>>> option in menuconfig, then I think it could be some interesting
>>>> investigation. However, I can't see how it would help with removing
>>>> some code paths in the driver (e.g. the clflush() calls we were talking
>>>> about in another patch series) since the code elimination would all
>>>> happen at link time.
>>>
>>> Clflush class of problems is yet another orthogonal set of problems.
>>>
>>> Yes, idea was that the Kconfig option would be selected by Arm, or
>>> deselected by x86, whatever. But there is also a case for letting it be
>>> user visible.
>>>
>>> In general, I thought at least, we should look into not
>>> building/deploying binary code for irrelevant hardware on Arm builds. If
>>> that is clear and agreeable then I think the approach how to get there
>>> is really multi-pronged.
>>>
>>> 1)
>>> What you are partly doing with "clflush" type series. Make Arm relevant
>>> code paths actually compile on Arm.
>>>
>>> 2a)
>>> What I sent in this series - it's simple/easy dead code elimination from
>>> a single compilation unit.
>>>
>>> 2b)
>>> *If* we resurrected GRAPHICS_VER check where "ver" is part of the macro,
>>> eg. not doing "if (GRAPHICS_VER <=> N)" but "if (GRAPHICS_VERN)", or "if
>>> IS_GRAPHICS_VER(N, FOREVER)", then the same approach would be more
>>> effective.
>>>
>>> Because if N or range is the macro parameter, we can make it dead code
>>> based on Kconfig.
>>>
>>> This is what I demonstrated few years ago by being able to compile out
>>> ~3rd of a driver when selecting only execlists platforms, AFAIR.
>>>
>>> And which is why I was a bit unhappy this was getting removed not so
>>> long ago.
>> 
>> The main problem with that, as well as the Kconfig here, is maintenance.
>> 
>> If it's fancy but unused, it's just added complexity for no benefit,
>> just the drawbacks. Every change needs to take the complexity into
>> account. If it's unused and untested, it's just going to bitrot anyway.
>> 
>> For example, I think a config option for disabling igfx should have both
>> build and runtime testing in place before we should consider taking on
>> the burden of maintaining it. Otherwise it's just haphazard struggle,
>> and the burden falls on a handful of interested people working on it on
>> the side, occasionally fixing things as they break. And they'll break
>> because nobody else cares.
>> 
>> If someone shows up and says i915.ko is too big, they need to be serious
>> enough to invest in maintaining the configurable size reductions, per
>> target platform.
>
> Yeah no disagreement for the most part.
>
> Whether there is a cheap way (as in maintenance/intrusiveness) which 
> brings gains large enough.
>
> In my view it is also not a question of "too big" per se, but a question 
> of professional pride of doing things properly, even if it is hard, 
> instead of padding the binaries with dead code and sending them on 
> rounds over the world, to "use electrons" unreachable on uncountable 
> hypothetical customer machines and travel as updates over undersea 
> cables for no use. :D Just because we, sitting on the source/upstream, 
> decided it's too hard.

Well, not because it's too hard, but mostly because of picking the
battles? Also a matter of taste in what constitutes as professional
pride. If it's worth doing, it's worth doing properly?

But I guess we are, mostly, on the same page here.

BR,
Jani.


>
> Not pressuring anything though, we are not quite there yet to worry 
> about scale deployments of Intel discrete on !x86. There is time. :) 
> I've thrown some seeds out there, if they don't take, they don't. It is 
> fine to tackle the "make it build and work" steps first.
>
> Regards,
>
> Tvrtko

-- 
Jani Nikula, Intel Open Source Graphics Center

  reply	other threads:[~2022-02-02 12:41 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-01 11:15 [Intel-gfx] [RFC 0/2] Compile out integrated Tvrtko Ursulin
2022-02-01 11:15 ` [Intel-gfx] [RFC 1/2] igp kconfig Tvrtko Ursulin
2022-02-01 11:15 ` [Intel-gfx] [RFC 2/2] jsl/ehl Tvrtko Ursulin
2022-02-01 11:26   ` Jani Nikula
2022-02-01 13:17 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for Compile out integrated Patchwork
2022-02-01 13:18 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2022-02-01 13:47 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2022-02-01 16:55 ` [Intel-gfx] [RFC 0/2] " Lucas De Marchi
2022-02-01 17:09   ` Jani Nikula
2022-02-01 17:28     ` Lucas De Marchi
2022-02-02 10:26       ` Tvrtko Ursulin
2022-02-02 11:20         ` Jani Nikula
2022-02-02 12:17           ` Tvrtko Ursulin
2022-02-02 12:41             ` Jani Nikula [this message]
2022-02-02 16:26         ` Lucas De Marchi
2022-02-08 10:31           ` Tvrtko Ursulin
2022-02-08 20:34             ` Lucas De Marchi
2022-02-01 17:37 ` [Intel-gfx] ✗ Fi.CI.IGT: failure for " Patchwork
2022-02-02 11:51 ` [Intel-gfx] [RFC 0/2] " Tvrtko Ursulin

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=874k5htp93.fsf@intel.com \
    --to=jani.nikula@intel.com \
    --cc=Intel-gfx@lists.freedesktop.org \
    --cc=lucas.demarchi@intel.com \
    --cc=michael.cheng@intel.com \
    --cc=tvrtko.ursulin@linux.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.