Re: [GIT PULL] platform-drivers-x86 for 4.15-1

2017-11-21 Thread Darren Hart
On Mon, Nov 20, 2017 at 09:48:58PM -1000, Linus Torvalds wrote:
> On Mon, Nov 20, 2017 at 9:06 AM, Darren Hart  wrote:
> >
> > Back in the 4.2 timeframe, platform-drivers-x86-v4.2-2 specifically, I
> > started adding my pull request commentary to the tag directly and the
> > pull requests themselves tended to have little or no information beyond
> > that.
> 
> Right - that's fine. I don't actually care whether the information is
> in the signed tag, or in the emailed pull request, or in both. I'll
> take it either way.
> 
> There are valid reasons to put it in the signed tag - that way you
> write it as you do the tag, and then "git pull-request" is pretty much
> entirely just automation.
> 
> But some people prefer to do the tag as just a marker (so the tag
> message may be basically worthless), and then write the explanation
> later in the email as they send it off. And that's fine too.
> 
> And yet other people do both - write some summary in the tag, but hen
> write more about it in the emailed message. And I'll take that too, no
> problem.
> 
> And in all three cases I'll edit things for grammar and whitespace
> (indentation) etc, and may remove commentary that may be interesting
> for  me doing the merge, but isn't relevant in the history once the
> merge is done.
> 
> > I didn't see a clear division between what should go in the pull
> > request email body and what should be in the tag, this kept all the
> > information about the pull request together in the tag.
> 
> There really is no division at all. One common _pattern_ is to have
> the email message contain more of a freeform message, while the tag
> contains more of a "summary list", but that's just a pattern that some
> people tend to use, and it's not in any way universal or required.
> 
> > Andy's pull request follows this pattern, with the text of the tag
> > opening with the summary and context relevant to the pull request before
> > the munged shortlog:
> 
> Yes, and that separation is fine.
> 
> But I do want both parts to make sense. If the munged shortlog is pure
> automation, why send it to me at all? Or if you do send it to me, say
> that it's just filler for _you_, not for me.
> 
> But it looks like useful information, but without human editing, it's not.
> 
> It's basically the difference between "data" and "information". I want
> information, and if it's pure data that I could get from "git
> shortlog" that I should just ignore, then tell me to ignore it.

Thanks Linus, this is helpful. Andy and I have updated our tooling to
reflect the above, and we will modify our human-information-add as
follows:

The pull-request body will include merge-specific information and
instructions which are unrelated to the content. e.g. previously merged
fixes, pre-merged immutable branches, recommended merge conflict
resolution.

The tag message will include a human written highlights and summary,
followed by a git shortlog grouped by driver with a prefix indicating it
is automatically generated (although we will still verify the script
grouped things properly). This just offers a quick glance at what
changed by driver. I will also sometimes group fixes from static
analysis that would otherwise be rather noisy under a common group, e.g.

sparse fixes:
- Updated several drivers to use const strings

-- 
Darren Hart
VMware Open Source Technology Center


Re: [GIT PULL] platform-drivers-x86 for 4.15-1

2017-11-20 Thread Linus Torvalds
On Mon, Nov 20, 2017 at 9:06 AM, Darren Hart  wrote:
>
> Back in the 4.2 timeframe, platform-drivers-x86-v4.2-2 specifically, I
> started adding my pull request commentary to the tag directly and the
> pull requests themselves tended to have little or no information beyond
> that.

Right - that's fine. I don't actually care whether the information is
in the signed tag, or in the emailed pull request, or in both. I'll
take it either way.

There are valid reasons to put it in the signed tag - that way you
write it as you do the tag, and then "git pull-request" is pretty much
entirely just automation.

But some people prefer to do the tag as just a marker (so the tag
message may be basically worthless), and then write the explanation
later in the email as they send it off. And that's fine too.

And yet other people do both - write some summary in the tag, but hen
write more about it in the emailed message. And I'll take that too, no
problem.

And in all three cases I'll edit things for grammar and whitespace
(indentation) etc, and may remove commentary that may be interesting
for  me doing the merge, but isn't relevant in the history once the
merge is done.

> I didn't see a clear division between what should go in the pull
> request email body and what should be in the tag, this kept all the
> information about the pull request together in the tag.

There really is no division at all. One common _pattern_ is to have
the email message contain more of a freeform message, while the tag
contains more of a "summary list", but that's just a pattern that some
people tend to use, and it's not in any way universal or required.

> Andy's pull request follows this pattern, with the text of the tag
> opening with the summary and context relevant to the pull request before
> the munged shortlog:

Yes, and that separation is fine.

But I do want both parts to make sense. If the munged shortlog is pure
automation, why send it to me at all? Or if you do send it to me, say
that it's just filler for _you_, not for me.

But it looks like useful information, but without human editing, it's not.

It's basically the difference between "data" and "information". I want
information, and if it's pure data that I could get from "git
shortlog" that I should just ignore, then tell me to ignore it.

 Linus


Re: [GIT PULL] platform-drivers-x86 for 4.15-1

2017-11-20 Thread Darren Hart
On Sat, Nov 18, 2017 at 10:37:55AM -0800, Linus Torvalds wrote:
> On Sat, Nov 18, 2017 at 10:09 AM, Andy Shevchenko
>  wrote:
> >
> > Here is the collected material against Platform Drivers x86 subsystem.
> > It's rather bit busy cycle for PDx86, mostly due to Dell SMBIOS driver
> > activity.
> 
> So I note that you seem to use the same summary script that Darren used.
> 
> Guys, the "merge summary" should be human-readable, not just a
> slightly munged version of "git shortlog" that has been sorted by
> first word.
> 
> Feel free to use that munged version as a base-line, but don't just
> send me automated merge messages.
> 
> The whole point of a summary is to summarize. And merge messages
> should be legible, not "this is all the details that you could have
> just used 'git shortlog' to get".

Hi Linus,

Back in the 4.2 timeframe, platform-drivers-x86-v4.2-2 specifically, I
started adding my pull request commentary to the tag directly and the
pull requests themselves tended to have little or no information beyond
that. I didn't see a clear division between what should go in the pull
request email body and what should be in the tag, this kept all the
information about the pull request together in the tag.

Andy's pull request follows this pattern, with the text of the tag
opening with the summary and context relevant to the pull request before
the munged shortlog:

--- 8< ---
For this cycle we have quite an update for the Dell SMBIOS driver
including WMI work to provide an interface for SMBIOS tokens via sysfs
and WMI support for 2017+ Dell laptop models. SMM dispatcher code is
split into a separate driver followed by a new WMI dispatcher.
The latter provides a character device interface to user space.

The pull request contains a merge of immutable branch from Wolfram Sang
in order to apply a dependent fix to the Intel CherryTrail Battery
Management driver.

Other Intel drivers got a lot of cleanups. The Turbo Boost Max 3.0
support is added for Intel Skylake.

Peaq WMI hotkeys driver gets its own maintainer and white list of
supported models.

Silead DMI is expanded to support few additional platforms.

Tablet mode via GMMS ACPI method is added to support some ThinkPad
tablets.

Two commits appear here which were previously merged during the
v4.14-rcX cycle:

- d7ca5ebf2493 platform/x86: intel_pmc_ipc: Use devm_* calls in driver probe 
function
- e3075fd6f80c platform/x86: intel_pmc_ipc: Use spin_lock to protect GCR updates
--- 8< ---

Do you not want to see this in the tag and prefer we move it to the GIT
PULL email body? If so, what do you want to see in the tag message?

Or, is the above not what you're looking for at all? And if not, what
are you looking for instead?

> 
> When you can't even be bothered to fix up obvious issues like
> 
>  (a) "yeah, I just sorted things alphabetically without any human 
> interaction":
> 
> intel-wmi-thunderbolt:
>  -  Silence error cases
> 
> MAINTAINERS:
>  -  Add entry for the PEAQ WMI hotkeys driver
> 
> mlx-platform:
>  -  make a couple of structures static
> 
>  (b) "yeah, my summary script splits the overview at a colon, so when
> there is no colon it doesn't work":
> 
> Add driver to force WMI Thunderbolt controller power status:
>  - Add driver to force WMI Thunderbolt controller power status
> 
> it's good that you have a fairly unified commit message model and can
> do these summaries, but it's bad when you then don't do much of any
> _human_ summary at all or even check the result for sanity.

Agreed. Andy, we need to read through everything we put into that pull
request and adjust to make sense. Pull Requests are not automated, the
scripts are there to help us avoid human error, and be as consistent as
possible.

-- 
Darren Hart
VMware Open Source Technology Center


Re: [GIT PULL] platform-drivers-x86 for 4.15-1

2017-11-20 Thread Darren Hart
On Sat, Nov 18, 2017 at 12:09:10PM -0800, Linus Torvalds wrote:
> On Sat, Nov 18, 2017 at 10:37 AM, Linus Torvalds
>  wrote:
> >
> > So I note that you seem to use the same summary script that Darren used.
> 
> .. oh, and I note a *much* worse issue.
> 
> You add new drivers and then default them to "on".
> 
> THAT IS COMPLETELY UNACCEPTABLE.
> 
> I don't know why I have to say this every single merge window, but
> let's do it one more time:
> 
>   As a developer, you think _your_ driver or feature is the most
> important thing ever, and you have the hardware.
> 
>   AND ALMOST NOBODY ELSE CARES.
> 
> Read it and weep. Unless your hardware is completely ubiquitous, it
> damn well should not default to being defaulted everybody elses
> config.

Understood and agreed, this is especially true for our subsystem which
is full of  platform  specific drivers.

> 
> In particular, people who do "make oldconfig" clearly had a
> configuration _without_ your hardware and were happy with it, and want
> to keep it working. That's what "oldconfig" means.
> 
> You don't say "hey, let's enable this piece of hardware that you don't
> have anyway, just to waste your time and disk and memory".
> 
> So the things that merit "default y/m" are
> 
>  (a) you added a Kconfig option for something that used to always be
> built. Then it merits that "default y" exactly because "make
> oldconfig" should just work.
> 
>  (b) corollary of the above: if you add a new gatekeeping Kconfig
> option that hides/shows other Kconfig options (but doesn't generate
> any code of its own), it should be enabled by default, simply so that
> by default people will see those other options.
> 
>  (c) your driver itself defaults to off, but you then have sub-driver
> options for behavior or similar, where you can give sane defaults for
> people who _do_ have your hardware, and want the driver for it, and
> within those constraints the extended option makes sense
> 
>  (d) your piece of hardware or infrastructure really is something that
> everybody expects. If you have CONFIG_NET or CONFIG_BLOCK, you get to
> enable it by default.
> 
> But something like CONFIG_DELL_SMBIOS sure as hell does not merit
> being default on. Not even if you have enabled WMI.
> 
> EVERY SINGLE "default" line that got added by this branch was wrong.
> 
> Stop doing this. It's a serious violation of peoples expectations.
> When I do "make oldconfig", I don't want some new random hardware
> support.

The above looks like good Documentation/ material. A quick scan doesn't
find it, but I'll look more closely and prepare a patch adding it if
I don't find it.

I'll have a sidebar with Andy and we'll review, set expectations, update
tooling as necessary, and resubmit. Given the above Kconfig default,
we'll prepare a patch on top of the existing HEAD to default to No, and
create a new tag.

Appreciate the detail above, we'll make sure it doesn't get lost.

-- 
Darren Hart
VMware Open Source Technology Center


Re: [GIT PULL] platform-drivers-x86 for 4.15-1

2017-11-18 Thread Linus Torvalds
On Sat, Nov 18, 2017 at 10:37 AM, Linus Torvalds
 wrote:
>
> So I note that you seem to use the same summary script that Darren used.

.. oh, and I note a *much* worse issue.

You add new drivers and then default them to "on".

THAT IS COMPLETELY UNACCEPTABLE.

I don't know why I have to say this every single merge window, but
let's do it one more time:

  As a developer, you think _your_ driver or feature is the most
important thing ever, and you have the hardware.

  AND ALMOST NOBODY ELSE CARES.

Read it and weep. Unless your hardware is completely ubiquitous, it
damn well should not default to being defaulted everybody elses
config.

In particular, people who do "make oldconfig" clearly had a
configuration _without_ your hardware and were happy with it, and want
to keep it working. That's what "oldconfig" means.

You don't say "hey, let's enable this piece of hardware that you don't
have anyway, just to waste your time and disk and memory".

So the things that merit "default y/m" are

 (a) you added a Kconfig option for something that used to always be
built. Then it merits that "default y" exactly because "make
oldconfig" should just work.

 (b) corollary of the above: if you add a new gatekeeping Kconfig
option that hides/shows other Kconfig options (but doesn't generate
any code of its own), it should be enabled by default, simply so that
by default people will see those other options.

 (c) your driver itself defaults to off, but you then have sub-driver
options for behavior or similar, where you can give sane defaults for
people who _do_ have your hardware, and want the driver for it, and
within those constraints the extended option makes sense

 (d) your piece of hardware or infrastructure really is something that
everybody expects. If you have CONFIG_NET or CONFIG_BLOCK, you get to
enable it by default.

But something like CONFIG_DELL_SMBIOS sure as hell does not merit
being default on. Not even if you have enabled WMI.

EVERY SINGLE "default" line that got added by this branch was wrong.

Stop doing this. It's a serious violation of peoples expectations.
When I do "make oldconfig", I don't want some new random hardware
support.

  Linus


Re: [GIT PULL] platform-drivers-x86 for 4.15-1

2017-11-18 Thread Linus Torvalds
On Sat, Nov 18, 2017 at 10:09 AM, Andy Shevchenko
 wrote:
>
> Here is the collected material against Platform Drivers x86 subsystem.
> It's rather bit busy cycle for PDx86, mostly due to Dell SMBIOS driver
> activity.

So I note that you seem to use the same summary script that Darren used.

Guys, the "merge summary" should be human-readable, not just a
slightly munged version of "git shortlog" that has been sorted by
first word.

Feel free to use that munged version as a base-line, but don't just
send me automated merge messages.

The whole point of a summary is to summarize. And merge messages
should be legible, not "this is all the details that you could have
just used 'git shortlog' to get".

When you can't even be bothered to fix up obvious issues like

 (a) "yeah, I just sorted things alphabetically without any human interaction":

intel-wmi-thunderbolt:
 -  Silence error cases

MAINTAINERS:
 -  Add entry for the PEAQ WMI hotkeys driver

mlx-platform:
 -  make a couple of structures static

 (b) "yeah, my summary script splits the overview at a colon, so when
there is no colon it doesn't work":

Add driver to force WMI Thunderbolt controller power status:
 - Add driver to force WMI Thunderbolt controller power status

it's good that you have a fairly unified commit message model and can
do these summaries, but it's bad when you then don't do much of any
_human_ summary at all or even check the result for sanity.

  Linus


[GIT PULL] platform-drivers-x86 for 4.15-1

2017-11-18 Thread Andy Shevchenko
Hi Linus,

Here is the collected material against Platform Drivers x86 subsystem.
It's rather bit busy cycle for PDx86, mostly due to Dell SMBIOS driver
activity.

During merge it will get a conflict

CONFLICT (content): Merge conflict in Documentation/admin-guide/thunderbolt.rst

that is pretty straight forward to solve, i.e. we need all parts of
documentation be in, where "Networking over Thunderbolt cable" is
followed by "Forcing power" chapter.

Thanks,

With Best Regards,
Andy Shevchenko

The following changes since commit 0224d45c9d46401b6d7018a96cfe049c5da7d91c:

  i2c-cht-wc: Add device-properties for fusb302 integration (2017-10-27 
15:51:51 +0200)

are available in the Git repository at:

  git://git.infradead.org/linux-platform-drivers-x86.git 
tags/platform-drivers-x86-v4.15-1

for you to fetch changes up to aaa40965d2342137d756121993c395e2a7463a8d:

  platform/x86: silead_dmi: Add silead, home-button property to some tablets 
(2017-11-18 19:28:58 +0200)


platform-drivers-x86 for v4.15-1

For this cycle we have quite an update for the Dell SMBIOS driver
including WMI work to provide an interface for SMBIOS tokens via sysfs
and WMI support for 2017+ Dell laptop models. SMM dispatcher code is
split into a separate driver followed by a new WMI dispatcher.
The latter provides a character device interface to user space.

The pull request contains a merge of immutable branch from Wolfram Sang
in order to apply a dependent fix to the Intel CherryTrail Battery
Management driver.

Other Intel drivers got a lot of cleanups. The Turbo Boost Max 3.0
support is added for Intel Skylake.

Peaq WMI hotkeys driver gets its own maintainer and white list of
supported models.

Silead DMI is expanded to support few additional platforms.

Tablet mode via GMMS ACPI method is added to support some ThinkPad
tablets.

Two commits appear here which were previously merged during the
v4.14-rcX cycle:

- d7ca5ebf2493 platform/x86: intel_pmc_ipc: Use devm_* calls in driver probe 
function
- e3075fd6f80c platform/x86: intel_pmc_ipc: Use spin_lock to protect GCR updates

Add driver to force WMI Thunderbolt controller power status:
 - Add driver to force WMI Thunderbolt controller power status

asus-wmi:
 -  Add lightbar led support

dell-laptop:
 -  Allocate buffer before rfkill use

dell-smbios:
 -  fix string overflow
 -  Add filtering support
 -  Introduce dispatcher for SMM calls
 -  Add a sysfs interface for SMBIOS tokens
 -  only run if proper oem string is detected
 -  Prefix class/select with cmd_
 -  Add pr_fmt definition to driver

dell-smbios-smm:
 -  test for WSMT

dell-smbios-wmi:
 -  release mutex lock on WMI call failure
 -  introduce userspace interface
 -  Add new WMI dispatcher driver

dell-smo8800:
 -  remove redundant assignments to byte_data

dell-wmi:
 -  don't check length returned
 -  clean up wmi descriptor check
 -  increase severity of some failures
 -  Do not match on descriptor GUID modalias
 -  Label driver as handling notifications

dell-*wmi*:
 -  Relay failed initial probe to dependent drivers

dell-wmi-descriptor:
 -  check if memory was allocated
 -  split WMI descriptor into it's own driver

fujitsu-laptop:
 -  Fix radio LED detection
 -  Don't oops when FUJ02E3 is not presnt

hp_accel:
 -  Add quirk for HP ProBook 440 G4

hp-wmi:
 -  Fix tablet mode detection for convertibles

ideapad-laptop:
 -  Add Lenovo Yoga 920-13IKB to no_hw_rfkill dmi list

intel_cht_int33fe:
 -  Update fusb302 type string, add properties
 -  make a couple of local functions static
 -  Work around BIOS bug on some devices

intel-hid:
 -  Power button suspend on Dell Latitude 7275

intel_ips:
 -  Convert timers to use timer_setup()
 -  Remove FSF address from GPL notice
 -  Remove unneeded fields and label
 -  Keep pointer to struct device
 -  Use PCI_VDEVICE() macro
 -  Switch to new PCI IRQ allocation API
 -  Simplify error handling via devres API

intel_pmc_ipc:
 -  Revert Use MFD framework to create dependent devices
 -  Use MFD framework to create dependent devices
 -  Use spin_lock to protect GCR updates
 -  Use devm_* calls in driver probe function

intel_punit_ipc:
 -  Fix resource ioremap warning

intel_telemetry:
 -  Remove useless default in Kconfig
 -  Add needed inclusion
 -  cleanup redundant headers
 -  Fix typos
 -  Fix load failure info

intel_telemetry_debugfs:
 -  Use standard ARRAY_SIZE() macro

intel_turbo_max_3:
 -  Add Skylake platform

intel-wmi-thunderbolt:
 -  Silence error cases

MAINTAINERS:
 -  Add entry for the PEAQ WMI hotkeys driver

mlx-platform:
 -  make a couple of structures static

peaq_wmi:
 -  Fix missing terminating entry for peaq_dmi_table

peaq-wmi:
 -  Remove unnecessary checks from peaq_wmi_exit
 -  Add DMI check before binding to the WMI interface
 -  Revert Blacklist Lenovo ideapad 700-15ISK
 -  Blacklist Lenovo ideapad 700-15ISK

silead_dmi:
 -  Add silead, home-button property to some tablets
 -  Add entry