<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/acpi/property.c, branch linux-5.1.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.1.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.1.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2019-05-31T13:43:18Z</updated>
<entry>
<title>ACPI / property: fix handling of data_nodes in acpi_get_next_subnode()</title>
<updated>2019-05-31T13:43:18Z</updated>
<author>
<name>Pierre-Louis Bossart</name>
</author>
<published>2019-04-30T15:52:29Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d72be6289f4a56356afe090c5757e129ad5693f5'/>
<id>urn:sha1:d72be6289f4a56356afe090c5757e129ad5693f5</id>
<content type='text'>
[ Upstream commit 23583f7795025e3c783b680d906509366b0906ad ]

When the DSDT tables expose devices with subdevices and a set of
hierarchical _DSD properties, the data returned by
acpi_get_next_subnode() is incorrect, with the results suggesting a bad
pointer assignment. The parser works fine with device_nodes or
data_nodes, but not with a combination of the two.

The problem is traced to an invalid pointer used when jumping from
handling device_nodes to data nodes. The existing code looks for data
nodes below the last subdevice found instead of the common root. Fix
by forcing the acpi_device pointer to be derived from the same fwnode
for the two types of subnodes.

This same problem of handling device and data nodes was already fixed
in a similar way by 'commit bf4703fdd166 ("ACPI / property: fix data
node parsing in acpi_get_next_subnode()")' but broken later by 'commit
34055190b19 ("ACPI / property: Add fwnode_get_next_child_node()")', so
this should probably go to linux-stable all the way to 4.12

Signed-off-by: Pierre-Louis Bossart &lt;pierre-louis.bossart@linux.intel.com&gt;
Reviewed-by: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>PCI / ACPI: Identify untrusted PCI devices</title>
<updated>2018-12-05T09:01:55Z</updated>
<author>
<name>Mika Westerberg</name>
</author>
<published>2018-08-16T09:28:48Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=617654aae50eb59dd98aa53fb562e850937f4cde'/>
<id>urn:sha1:617654aae50eb59dd98aa53fb562e850937f4cde</id>
<content type='text'>
A malicious PCI device may use DMA to attack the system. An external
Thunderbolt port is a convenient point to attach such a device. The OS
may use IOMMU to defend against DMA attacks.

Some BIOSes mark these externally facing root ports with this
ACPI _DSD [1]:

  Name (_DSD, Package () {
      ToUUID ("efcc06cc-73ac-4bc3-bff0-76143807c389"),
      Package () {
          Package () {"ExternalFacingPort", 1},
	  Package () {"UID", 0 }
      }
  })

If we find such a root port, mark it and all its children as untrusted.
The rest of the OS may use this information to enable DMA protection
against malicious devices. For instance the device may be put behind an
IOMMU to keep it from accessing memory outside of what the driver has
allocated for it.

While at it, add a comment on top of prp_guids array explaining the
possible caveat resulting when these GUIDs are treated equivalent.

[1] https://docs.microsoft.com/en-us/windows-hardware/drivers/pci/dsd-for-pcie-root-ports#identifying-externally-exposed-pcie-root-ports

Signed-off-by: Mika Westerberg &lt;mika.westerberg@linux.intel.com&gt;
Acked-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
Acked-by: Bjorn Helgaas &lt;bhelgaas@google.com&gt;
</content>
</entry>
<entry>
<title>PCI / ACPI: Whitelist D3 for more PCIe hotplug ports</title>
<updated>2018-10-02T21:04:40Z</updated>
<author>
<name>Mika Westerberg</name>
</author>
<published>2018-09-27T21:57:14Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=26ad34d510a87fc65caeb48fa85cce58d2477a88'/>
<id>urn:sha1:26ad34d510a87fc65caeb48fa85cce58d2477a88</id>
<content type='text'>
In order to have better power management for Thunderbolt PCIe chains,
Windows enables power management for native PCIe hotplug ports if there is
the following ACPI _DSD attached to the root port:

  Name (_DSD, Package () {
      ToUUID ("6211e2c0-58a3-4af3-90e1-927a4e0c55a4"),
      Package () {
          Package () {"HotPlugSupportInD3", 1}
      }
  })

This is also documented in:

  https://docs.microsoft.com/en-us/windows-hardware/drivers/pci/dsd-for-pcie-root-ports#identifying-pcie-root-ports-supporting-hot-plug-in-d3

Do the same in Linux by introducing new firmware PM callback
(-&gt;bridge_d3()) and then implement it for ACPI based systems so that the
above property is checked.

There is one catch, though. The initial pci_dev-&gt;bridge_d3 is set before
the root port has ACPI companion bound (the device is not added to the PCI
bus either) so we need to look up the ACPI companion manually in that case
in acpi_pci_bridge_d3().

Signed-off-by: Mika Westerberg &lt;mika.westerberg@linux.intel.com&gt;
Signed-off-by: Bjorn Helgaas &lt;bhelgaas@google.com&gt;
Reviewed-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
<entry>
<title>ACPI / property: Allow multiple property compatible _DSD entries</title>
<updated>2018-10-02T21:04:40Z</updated>
<author>
<name>Mika Westerberg</name>
</author>
<published>2018-09-27T21:57:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5f5e4890d57a8af5da72c9d73a4efa9bad43a7a3'/>
<id>urn:sha1:5f5e4890d57a8af5da72c9d73a4efa9bad43a7a3</id>
<content type='text'>
It is possible to have _DSD entries where the data is compatible with
device properties format but are using different GUID for various reasons.
In addition to that there can be many such _DSD entries for a single device
such as for PCIe root port used to host a Thunderbolt hierarchy:

    Scope (\_SB.PCI0.RP21)
    {
        Name (_DSD, Package () {
            ToUUID ("6211e2c0-58a3-4af3-90e1-927a4e0c55a4"),
            Package () {
                Package () {"HotPlugSupportInD3", 1}
            },

            ToUUID ("efcc06cc-73ac-4bc3-bff0-76143807c389"),
            Package () {
                Package () {"ExternalFacingPort", 1},
                Package () {"UID", 0 }
            }
        })
    }

More information about these new _DSD entries can be found in:

  https://docs.microsoft.com/en-us/windows-hardware/drivers/pci/dsd-for-pcie-root-ports

To make these available for drivers via unified device property APIs,
modify ACPI property core so that it supports multiple _DSD entries
organized in a linked list. We also store GUID of each _DSD entry in struct
acpi_device_properties in case there is need to differentiate between
entries. The supported GUIDs are then listed in prp_guids array.

Signed-off-by: Mika Westerberg &lt;mika.westerberg@linux.intel.com&gt;
Signed-off-by: Bjorn Helgaas &lt;bhelgaas@google.com&gt;
Reviewed-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
Acked-by: Sakari Ailus &lt;sakari.ailus@linux.intel.com&gt;
</content>
</entry>
<entry>
<title>ACPI: property: Use data node name and reg property for graphs</title>
<updated>2018-07-23T10:44:52Z</updated>
<author>
<name>Sakari Ailus</name>
</author>
<published>2018-07-17T14:19:16Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=18f1e58d1536f69d4e35f6eabaa07e57eb317314'/>
<id>urn:sha1:18f1e58d1536f69d4e35f6eabaa07e57eb317314</id>
<content type='text'>
Instead of using the port and endpoint properties, rely on the names of
the port and endpoint nodes as well as the reg property, as on DT.

Signed-off-by: Sakari Ailus &lt;sakari.ailus@linux.intel.com&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
<entry>
<title>ACPI: property: Allow direct graph endpoint references</title>
<updated>2018-07-23T10:44:52Z</updated>
<author>
<name>Sakari Ailus</name>
</author>
<published>2018-07-17T14:19:15Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6561eb3d3a23c4d38ba428396b7a14e184804535'/>
<id>urn:sha1:6561eb3d3a23c4d38ba428396b7a14e184804535</id>
<content type='text'>
By using device and further data node references, allow direct references
to endpoints. These are of form

	Package() { \DEV, "portX", "endpointY" }

where X is the number of the port and Y is the number of the endpoint.

Signed-off-by: Sakari Ailus &lt;sakari.ailus@linux.intel.com&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
<entry>
<title>ACPI: property: Make the ACPI graph API private</title>
<updated>2018-07-23T10:44:52Z</updated>
<author>
<name>Sakari Ailus</name>
</author>
<published>2018-07-17T14:19:14Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0ef7478639c5165a672f01b4024aacfffa951813'/>
<id>urn:sha1:0ef7478639c5165a672f01b4024aacfffa951813</id>
<content type='text'>
The fwnode graph API is preferred over the ACPI graph API. Therefore
make the ACPI graph API private, and use it as a back-end for the
fwnode graph API only.

Unused functionality is removed while the functionality actually used
remains the same.

Signed-off-by: Sakari Ailus &lt;sakari.ailus@linux.intel.com&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
<entry>
<title>ACPI: property: Allow making references to non-device nodes</title>
<updated>2018-07-23T10:44:52Z</updated>
<author>
<name>Sakari Ailus</name>
</author>
<published>2018-07-17T14:19:12Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4eb0c3bf5ee52ffc88500763d80ba01393879794'/>
<id>urn:sha1:4eb0c3bf5ee52ffc88500763d80ba01393879794</id>
<content type='text'>
Implement references to non-device nodes using the first package
entry in the hierarchical data extension reference, the second one
being the name of the referred object.

The data node references are parsed just after the device arguments
before the integer arguments. If there are no strings after the
device arguments, the parsing works exactly as it used to be.

Referring to a data node called "node" under device DEV, with
integer arguments 0, 2 would thus look like:

	Package() { DEV, "node", 0, 2 }

Signed-off-by: Sakari Ailus &lt;sakari.ailus@linux.intel.com&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
<entry>
<title>ACPI: Convert ACPI reference args to generic fwnode reference args</title>
<updated>2018-07-23T10:44:52Z</updated>
<author>
<name>Sakari Ailus</name>
</author>
<published>2018-07-17T14:19:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=977d5ad39f3ea12ac0bd51d75020cea5ecdca235'/>
<id>urn:sha1:977d5ad39f3ea12ac0bd51d75020cea5ecdca235</id>
<content type='text'>
Convert all users of struct acpi_reference_args to more generic
fwnode_reference_args. This will

 1) avoid an ACPI specific references to device nodes with integer
    arguments as well as

 2) allow making references to nodes other than device nodes in ACPI.

As a by-product, convert the fwnode interger arguments to u64. The
arguments were 64-bit integers on ACPI but the fwnode arguments were
just 32-bit.

Signed-off-by: Sakari Ailus &lt;sakari.ailus@linux.intel.com&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
<entry>
<title>device property: Constify device_get_match_data()</title>
<updated>2018-02-12T09:41:11Z</updated>
<author>
<name>Andy Shevchenko</name>
</author>
<published>2018-02-09T15:38:36Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=67dcc26d208ca5578f08c3c78cb254418c24e9ec'/>
<id>urn:sha1:67dcc26d208ca5578f08c3c78cb254418c24e9ec</id>
<content type='text'>
Constify device_get_match_data() as OF and ACPI variants return
constant value.

Acked-by: Sakari Ailus &lt;sakari.ailus@linux.intel.com&gt;
Signed-off-by: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Reviewed-by: Mika Westerberg &lt;mika.westerberg@linux.intel.com&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
</feed>
