Re: [PATCH v2 2/2] ACPI: property: Ignore bad graph port nodes on Dell XPS 9315

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Andy,

Thanks for the review.

I think Rafael has already applied this but I can send a new patch...

On Wed, Feb 21, 2024 at 12:21:13AM +0200, andy.shevchenko@xxxxxxxxx wrote:
> Tue, Feb 13, 2024 at 03:46:06PM +0200, Sakari Ailus kirjoitti:
> > Some systems were shipped with both Windows and Linux camera descriptions.
> > In general, if Linux description exist, they will be used and Windows
> > description ignored.
> > 
> > In this case the Linux descriptions were buggy so use Windows definition
> > instead. This patch ignores the bad graph port nodes on Dell XPS 9315 and
> > there are likely other such systems, too. The corresponding information
> > has been added to ipu-bridge to cover the missing bits.
> 
> ...
> 
> >  void acpi_mipi_scan_crs_csi2(void);
> >  void acpi_mipi_init_crs_csi2_swnodes(void);
> >  void acpi_mipi_crs_csi2_cleanup(void);
> 
> + blank line?

The usa of blank lines elsewhere in the file is consistent with the above.
These are all related.

> 
> > +bool acpi_graph_ignore_port(acpi_handle handle);
> >  
> >  #endif /* _ACPI_INTERNAL_H_ */
> 
> ...
> 
> > +static const struct dmi_system_id dmi_ignore_port_nodes[] = {
> > +	{
> > +		.matches = {
> > +			DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > +			DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "XPS 9315"),
> > +		},
> > +	},
> > +	{ 0 }
> 
> 0 is not needed. Moreover, it's a bit unusual.

But also required by the C standard.
 
> > +};
> 
> ...
> 
> > +static const char *strnext(const char *s1, const char *s2)
> > +{
> > +	s1 = strstr(s1, s2);
> > +
> > +	if (!s1)
> > +		return NULL;
> > +
> > +	return s1 + strlen(s2);
> > +}
> 
> NIH str_has_prefix() ?

It doesn't do the same thing. Yes, it could be used, but the code looks
cleaner with this.

> 
> ...
> 
> > +/**
> > + * acpi_graph_ignore_port - Tell whether a port node should be ignored
> > + * @handle: The ACPI handle of the node (which may be a port node)
> > + *
> > + * Returns true if a port node should be ignored and the data to that should
> 
> Please, run kernel-doc validation and fix the warnings.

Running kernel-doc on the file doesn't produce any here.

> 
> > + * come from other sources instead (Windows ACPI definitions and
> > + * ipu-bridge). This is currently used to ignore bad port nodes related to IPU6
> > + * ("IPU?") and camera sensor devices ("LNK?") in certain Dell systems with
> > + * Intel VSC.
> > + */
> > +bool acpi_graph_ignore_port(acpi_handle handle)
> > +{
> > +	const char *path = NULL, *orig_path;
> > +	static bool dmi_tested, ignore_port;
> > +
> > +	if (!dmi_tested) {
> > +		ignore_port = dmi_first_match(dmi_ignore_port_nodes);
> > +		dmi_tested = true;
> > +	}
> > +
> > +	if (!ignore_port)
> > +		return false;
> > +
> > +	/* Check if the device is either "IPU" or "LNK" (sensor). */
> > +	orig_path = acpi_handle_path(handle);
> > +	if (!orig_path)
> > +		return false;
> > +	path = strnext(orig_path, "IPU");
> 
> IIUC this can be rewritten as
> 
> 	path += str_has_prefix();
> 	if (path == orig_path)

You could do that here, but now below, without introducing a new temporary
variable and shuffling that and "path". I prefer to keep it as-is.

> 		...
> 
> > +	if (!path)
> > +		path = strnext(orig_path, "LNK");
> > +	if (!path)
> > +		goto out_free;
> > +
> > +	if (!(path[0] >= '0' && path[0] <= '9' && path[1] == '.'))
> 
> isdigit() ?

Makes sense.

> 
> > +		goto out_free;
> > +
> > +	/* Check if the node has a "PRT" prefix. */
> > +	path = strnext(path, "PRT");
> > +	if (path && path[0] >= '0' && path[0] <= '9' && !path[1]) {
> 
> Ditto.

Yes.

> 
> > +		acpi_handle_debug(handle, "ignoring data node\n");
> > +
> > +		kfree(orig_path);
> > +		return true;
> > +	}
> > +
> > +out_free:
> > +	kfree(orig_path);
> > +	return false;
> > +}
> 

-- 
Kind regards,

Sakari Ailus




[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]
  Powered by Linux