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:	Thu, 23 Jun 2016 00:32:54 +0000
From:	"Zheng, Lv" <lv.zheng@...el.com>
To:	Mike Galbraith <umgwanakikbuti@...il.com>
CC:	"Moore, Robert" <robert.moore@...el.com>,
	"Wysocki, Rafael J" <rafael.j.wysocki@...el.com>,
	LKML <linux-kernel@...r.kernel.org>
Subject: RE: 4.7 regression - ACPICA: Hardware: Enhance
 acpi_hw_validate_register() with access_width/bit_offset awareness

Hi, Mike

> From: Mike Galbraith [mailto:umgwanakikbuti@...il.com]
> Subject: 4.7 regression - ACPICA: Hardware: Enhance
> acpi_hw_validate_register() with access_width/bit_offset awareness
> 
> In my aging (ok old) HP DL980 G7
[Lv Zheng] 

Which may mean Windows Vista cannot run on this machine, and you need to use quirks to run recent Linux.
Could you try to boot it with one of the following parameters or both of the parameters:
acpi=rsdt
Or
acpi_force_32bit_fadt_addr

TBH, Windows preference of RSDT/XSDT and the preference of old 32-bit register/new GAS register descriptor are unknown to us.
But we prepared quirk for the users that my require an explicit preference to use the old platforms.

Please also send us the acpidump/dmidecode outputs for confirmation.

> ->access_width may be either 0 or
> max_bit_width, the later inspiring cpufreq to say go away.  The below
> made box a happy camper again.
> 
> ACPI Error: Unsupported register access width: 0x40 (20160422/hwregs-
> 165)
[Lv Zheng] 
According to the ACPI specification.
The valid access size is:
Specifies access size.
0 Undefined (legacy reasons)
1 Byte access
2 Word access
3 Dword access
4 QWord access

0x40 is a too big number.
So you surely need a quirk because the value filled by the BIOS is not spec compliant.

Thanks and best regards
-Lv

> 
> Dinged-up-by: my little hammer
> ---
>  drivers/acpi/acpica/hwregs.c |   13 ++++++++++---
>  1 file changed, 10 insertions(+), 3 deletions(-)
> 
> --- a/drivers/acpi/acpica/hwregs.c
> +++ b/drivers/acpi/acpica/hwregs.c
> @@ -83,7 +83,7 @@ acpi_hw_write_multiple(u32 value,
>  static u8
>  acpi_hw_get_access_bit_width(struct acpi_generic_address *reg, u8
> max_bit_width)
>  {
> -	if (!reg->access_width) {
> +	if (!reg->access_width || reg->access_width == max_bit_width) {
>  		if (reg->space_id == ACPI_ADR_SPACE_SYSTEM_IO) {
>  			max_bit_width = 32;
>  		}
> @@ -152,9 +152,16 @@ acpi_hw_validate_register(struct acpi_ge
>  		return (AE_SUPPORT);
>  	}
> 
> -	/* Validate the access_width */
> +	/* Validate the access_width, or bit_width for old register
> descriptors */
> 
> -	if (reg->access_width > 4) {
> +	if ((!reg->access_width || reg->access_width == max_bit_width)) {
> +		if (reg->bit_width != 8 && reg->bit_width != 16 &&
> +		    reg->bit_width != 32 && reg->bit_width !=
> max_bit_width) {
> +			ACPI_ERROR((AE_INFO, "Unsupported register bit
> width: 0x%X",
> +				   reg->bit_width));
> +			return (AE_SUPPORT);
> +		}
> +	} else if (reg->access_width > 4) {
>  		ACPI_ERROR((AE_INFO,
>  			    "Unsupported register access width: 0x%X",
>  			    reg->access_width));

Powered by blists - more mailing lists