lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Tue, 13 Aug 2019 23:57:00 +0200
From:   "Rafael J. Wysocki" <rjw@...ysocki.net>
To:     ahs3@...hat.com
Cc:     linux-acpi@...r.kernel.org, linux-kernel@...r.kernel.org,
        Len Brown <lenb@...nel.org>
Subject: Re: [PATCH] ACPI / CPPC: do not require the _PSD method when using CPPC

On Tuesday, August 13, 2019 4:00:56 PM CEST Al Stone wrote:
> On 8/5/19 11:03 AM, Al Stone wrote:
> > According to the ACPI 6.3 specification, the _PSD method is optional
> > when using CPPC.  The underlying assumption appears to be that each CPU
> > can change frequency independently from all other CPUs; _PSD is provided
> > to tell the OS that some processors can NOT do that.
> > 
> > However, the acpi_get_psd() function returns -ENODEV if there is no _PSD
> > method present, or an ACPI error status if an error occurs when evaluating
> > _PSD, if present.  This essentially makes _PSD mandatory when using CPPC,
> > in violation of the specification, and only on Linux.
> > 
> > This has forced some firmware writers to provide a dummy _PSD, even though
> > it is irrelevant, but only because Linux requires it; other OSPMs follow
> > the spec.  We really do not want to have OS specific ACPI tables, though.
> > 
> > So, correct acpi_get_psd() so that it does not return an error if there
> > is no _PSD method present, but does return a failure when the method can
> > not be executed properly.  This allows _PSD to be optional as it should
> > be.
> > 
> > Signed-off-by: Al Stone <ahs3@...hat.com>
> > Cc: Rafael J. Wysocki <rjw@...ysocki.net>
> > Cc: Len Brown <lenb@...nel.org>
> > ---
> >  drivers/acpi/cppc_acpi.c | 11 +++++++----
> >  1 file changed, 7 insertions(+), 4 deletions(-)
> > 
> > diff --git a/drivers/acpi/cppc_acpi.c b/drivers/acpi/cppc_acpi.c
> > index 15f103d7532b..e9ecfa13e997 100644
> > --- a/drivers/acpi/cppc_acpi.c
> > +++ b/drivers/acpi/cppc_acpi.c
> > @@ -365,10 +365,13 @@ static int acpi_get_psd(struct cpc_desc *cpc_ptr, acpi_handle handle)
> >  	union acpi_object  *psd = NULL;
> >  	struct acpi_psd_package *pdomain;
> >  
> > -	status = acpi_evaluate_object_typed(handle, "_PSD", NULL, &buffer,
> > -			ACPI_TYPE_PACKAGE);
> > -	if (ACPI_FAILURE(status))
> > -		return -ENODEV;
> > +	if (acpi_has_method(handle, "_PSD")) {
> > +		status = acpi_evaluate_object_typed(handle, "_PSD", NULL,
> > +						    &buffer, ACPI_TYPE_PACKAGE);
> > +		if (ACPI_FAILURE(status))
> > +			return -ENODEV;
> > +	} else
> > +		return 0;		/* _PSD is optional */
> >  
> >  	psd = buffer.pointer;
> >  	if (!psd || psd->package.count != 1) {
> > 
> 
> Rafael,
> 
> Any other comments?

Yes (they will be sent separately).

> Would it be possible to pull this into an -rc?
> I'd really like to avoid anyone else having to ship Linux-specific
> DSDTs and SSDTs.

You won't achieve that through this patch alone, because they will
also want older kernels that don't include it to run on their platforms.

Thanks,
Rafael



Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ