public inbox for linux-acpi@vger.kernel.org
 help / color / mirror / Atom feed
From: Alexander Graf <graf@amazon.com>
To: Andy Shevchenko <andy.shevchenko@gmail.com>,
	Ard Biesheuvel <ardb@kernel.org>
Cc: "Jason A. Donenfeld" <Jason@zx2c4.com>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	linux-crypto <linux-crypto@vger.kernel.org>,
	ACPI Devel Maling List <linux-acpi@vger.kernel.org>,
	Mika Westerberg <mika.westerberg@linux.intel.com>,
	Hans de Goede <hdegoede@redhat.com>,
	"Len Brown" <lenb@kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Subject: Re: Re: [PATCH 2/3 v6] ACPI: allow longer device IDs
Date: Mon, 28 Feb 2022 23:00:55 +0100	[thread overview]
Message-ID: <db551fce-632e-c84f-3a3e-2733af9dcd46@amazon.com> (raw)
In-Reply-To: <Yh0+LA8B1jw8tnl9@smile.fi.intel.com>

Hi Andy,

On 28.02.22 22:27, Andy Shevchenko wrote:
> On Mon, Feb 28, 2022 at 10:02:43PM +0100, Ard Biesheuvel wrote:
>> On Mon, 28 Feb 2022 at 21:47, Andy Shevchenko <andy.shevchenko@gmail.com> wrote:
>>> On Mon, Feb 28, 2022 at 9:28 PM Jason A. Donenfeld <Jason@zx2c4.com> wrote:
>>>> From: Alexander Graf <graf@amazon.com>
>>>>
>>>> We create a list of ACPI "PNP" IDs which contains _HID, _CID, and CLS
>>>> entries of the respective devices. However, when making structs for
>>>> matching, we squeeze those IDs into acpi_device_id, which only has 9
>>>> bytes space to store the identifier. The subsystem actually captures the
>>>> full length of the IDs, and the modalias has the full length, but this
>>>> struct we use for matching is limited. It originally had 16 bytes, but
>>>> was changed to only have 9 in 6543becf26ff ("mod/file2alias: make
>>>> modalias generation safe for cross compiling"), presumably on the theory
>>>> that it would match the ACPI spec so it didn't matter.
>>>> Unfortunately, while most people adhere to the ACPI specs, Microsoft
>>>> decided that its VM Generation Counter device [1] should only be
>>>> identifiable by _CID with a value of "VM_Gen_Counter", which is longer
>>>> than 9 characters.
>>> Then why do we not see the ECR from somebody to update the spec or to
>>> fix MS' abuse of it?
>>> I believe _this_ should be the prerequisite to the proposed change.
>> What exactly are you suggesting here? That the contributor of this
>> patch joins the UEFI forum as an individual adopter in order to get
>> the ACPI spec updated before we can advance with this patch? Or that
>> he works with Microsoft to get them to refrain from violating it?
>>
>> I don't think that is reasonable or realistic. The kernel is already
>> riddled with UEFI and ACPI quirks that are only there because some
>> teams at MS don't take the ACPI spec too literally (which is why they
>> have their own AML compiler, for one), and PC vendors only care about
>> the Windows sticker, so they don't care about the ACPI spec either.
>>
>> So I don't think this is the right time to get pedantic about this.
>> Our ACPI subsystem already deals with CIDs that are longer than 8
>> characters (which are btw permitted by the ACPI spec for bus topology
>> related metadata), the only thing being changed here is the ability to
>> actually match against such identifiers.
> My point is that this is clear abuse of the spec and:
> 1) we have to enable the broken, because it is already in the wild with
>     the comment that this is an issue
>
> AND
>
> 2) issue an ECR / work with MS to make sure they understand the problem.
>
> This can be done in parallel. What I meant as a prerequisite is to start doing
> 2) while we have 1) on table.


While trying to revalidate whether this really is breaking the spec, 
I've tried to reread the respective section in it and I'm afraid that it 
may be valid use of the _CID identifier:


"""

6.1.2 _CID (Compatible ID)

This optional object is used to supply OSPM with a device’s Plug and 
Play-Compatible Device ID. Use _CID objects when a device has no other 
defined hardware standard method to report its compatible IDs. The _CID 
object is valid only within a Full Device Descriptor. An _HID object 
must also be present.

Arguments:

None

Return Value:
An Integer or String containing a single CID or a Package containing a 
list of CIDs A _CID object evaluates to either:

  *

    A single Compatible Device ID

  *

    A package of Compatible Device IDs for the device – in the order of
    preference, highest preference first.

Each Compatible Device ID must be either:

  *

    A valid HID value (a 32-bit compressed EISA type ID or a string such
    as “ACPI0004”).

  *

    A string that uses a bus-specific nomenclature. For example, _CID
    can be used to specify the PCI ID. The format of a PCI ID string is
    one of the following:

"PCI\CC_ccss" "PCI\CC_ccsspp" 
"PCI\VEN_vvvv&DEV_dddd&SUBSYS_ssssssss&REV_rr" 
"PCI\VEN_vvvv&DEV_dddd&SUBSYS_ssssssss" "PCI\VEN_vvvv&DEV_dddd&REV_rr" 
"PCI\VEN_vvvv&DEV_dddd"

"""

In this case, you could interpret things as looking at "bus-specific 
nomenclature" case which even in the examples mentioned in the spec 
exceeds the 8 character limit we impose on the matching logic today.

There still is spec violation in Hyper-V's VMGenID device's _HID value 
which doesn't follow the PNP format, but that's not relevant here. _CID 
doesn't seem to have the same restrictions?


Alex





Amazon Development Center Germany GmbH
Krausenstr. 38
10117 Berlin
Geschaeftsfuehrung: Christian Schlaeger, Jonathan Weiss
Eingetragen am Amtsgericht Charlottenburg unter HRB 149173 B
Sitz: Berlin
Ust-ID: DE 289 237 879



  parent reply	other threads:[~2022-02-28 22:01 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-26 22:06 [PATCH v5 0/3] ACPI: VM fork detection for RNG Jason A. Donenfeld
2022-02-26 22:06 ` [PATCH v5 1/3] random: add mechanism for VM forks to reinitialize crng Jason A. Donenfeld
2022-02-26 22:06 ` [PATCH v5 2/3] ACPI: allow longer device IDs Jason A. Donenfeld
2022-02-27  7:31   ` Ard Biesheuvel
2022-02-27  7:37     ` Ard Biesheuvel
2022-02-27 10:03     ` Jason A. Donenfeld
2022-02-27 10:30       ` Ard Biesheuvel
2022-02-27 10:47         ` Ard Biesheuvel
2022-02-27 11:38           ` Alexander Graf
2022-02-27 11:43             ` Ard Biesheuvel
2022-02-27 11:48               ` Alexander Graf
2022-02-27 11:59                 ` Ard Biesheuvel
2022-02-27 11:42   ` Alexander Graf
2022-02-27 12:43     ` Jason A. Donenfeld
2022-02-27 23:27       ` Jason A. Donenfeld
2022-02-28 18:19         ` Rafael J. Wysocki
2022-02-28 18:21           ` Jason A. Donenfeld
2022-02-28 18:33             ` [PATCH 2/3 v6] " Jason A. Donenfeld
2022-02-28 20:46               ` Andy Shevchenko
2022-02-28 20:58                 ` Jason A. Donenfeld
2022-02-28 21:02                 ` Ard Biesheuvel
2022-02-28 21:27                   ` Andy Shevchenko
2022-02-28 21:54                     ` Jason A. Donenfeld
2022-02-28 22:14                       ` Michael Kelley (LINUX)
2022-02-28 22:17                         ` Jason A. Donenfeld
2022-02-28 22:21                         ` Ard Biesheuvel
2022-02-28 22:38                           ` Michael Kelley (LINUX)
2022-02-28 22:46                             ` Ard Biesheuvel
2022-03-22 19:58                               ` Michael Kelley (LINUX)
2022-03-22 20:11                                 ` Jason A. Donenfeld
2022-03-24 19:25                                   ` Michael Kelley (LINUX)
2022-03-22 22:06                                 ` Ard Biesheuvel
2022-03-24 19:24                                   ` Michael Kelley (LINUX)
2022-03-24 19:45                                     ` Jason A. Donenfeld
2022-03-24 20:14                                       ` Michael Kelley (LINUX)
2022-03-01 13:12                         ` Andy Shevchenko
2022-02-28 22:00                     ` Alexander Graf [this message]
2022-02-28 22:17                       ` Ard Biesheuvel
2022-03-01 10:35               ` Hans de Goede
2022-03-01 10:38                 ` Jason A. Donenfeld
2022-03-01 10:49                   ` Hans de Goede
2022-03-01 14:25                 ` Andy Shevchenko
2022-03-01 14:48                   ` Jason A. Donenfeld
2022-03-01 12:29               ` Rafael J. Wysocki
2022-03-01 10:31           ` [PATCH v5 2/3] " Hans de Goede
2022-02-26 22:06 ` [PATCH v5 3/3] virt: vmgenid: introduce driver for reinitializing RNG on VM fork Jason A. Donenfeld
2022-03-06 16:02   ` Michael Kelley (LINUX)

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=db551fce-632e-c84f-3a3e-2733af9dcd46@amazon.com \
    --to=graf@amazon.com \
    --cc=Jason@zx2c4.com \
    --cc=andy.shevchenko@gmail.com \
    --cc=ardb@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=hdegoede@redhat.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mika.westerberg@linux.intel.com \
    --cc=rafael@kernel.org \
    /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