[coreboot] ASRock E350M1: Linux reports `piix4_smbus 0000:00:14.0: SMBus base address index region 0xcd6 already in use!`
Paul Menzel
paulepanter at users.sourceforge.net
Wed May 22 09:04:25 CEST 2013
Am Samstag, den 30.03.2013, 11:38 +0100 schrieb Rudolf Marek:
> > calling i2c_piix4_init+0x0/0x1000 [i2c_piix4] @ 559
> > piix4_smbus 0000:00:14.0: SMBus base address index region 0xcd6 already in use!
> > piix4_smbus: probe of 0000:00:14.0 failed with error -16
Starting Linux just with `quiet` on the command line (in GRUB 2), then
the message is different.
ACPI: resource piix4_smbus [io 0x0b00-0x0b07] conflicts with ACPI region SMB0 [io 0xb00-0xb0b]
> The I2C driver is paranoid and uses the cd6/cd7 pmio register just to obtain the
> base addr of the i2c controller. Most likely the cd6/cd7 is claimed in ACPI space.
>
> http://lxr.free-electrons.com/ident?v=2.6.39;i=piix4_setup_sb800
Rudolf gave me some more hints for debugging, I paste here.
> Am Donnerstag, den 16.05.2013, 08:45 +0200 schrieb Rudolf Marek:
> It is not a regression, merely the driver is paranoid and if
> the cd7/cd6 resources are declared in DSDT tables, it thinks it is used by acpi
> bytecode and gives up. So if you look when IO ports cd6/cd7 were introduced to
> ACPI. It could be also in SB code declared as IO_RESERVED and autogenerated.
>
> You can check
>
> acpidump >a.txt
> acpxtract -a
>
> iasl -d *dat
>
> to decompile all acpi tables and then search for cd7 ;)
$ sudo acpidump > acpi.txt
$ sudo acpixtract -a acpi.txt
Acpi table [DSDT] - 10971 bytes written to DSDT.dat
Acpi table [FACS] - 64 bytes written to FACS.dat
Acpi table [FACP] - 244 bytes written to FACP.dat
Acpi table [HPET] - 56 bytes written to HPET.dat
Acpi table [APIC] - 92 bytes written to APIC.dat
Acpi table [HEST] - 40 bytes written to HEST.dat
Acpi table [SSDT] - 5774 bytes written to SSDT1.dat
Acpi table [SSDT] - 990 bytes written to SSDT2.dat
Acpi table [SSDT] - 69 bytes written to SSDT3.dat
Acpi table [RSDT] - 64 bytes written to RSDT.dat
Acpi table [RSDP] - 20 bytes written to RSDP.dat
$ iasl -d *dat
Intel ACPI Component Architecture
ASL Optimizing Compiler version 20130214-32 [Apr 6 2013]
Copyright (c) 2000 - 2013 Intel Corporation
Loading Acpi table from file APIC.dat
Acpi Data Table [APIC] decoded
Formatted output: APIC.dsl - 3330 bytes
Loading Acpi table from file DSDT.dat
Acpi table [DSDT] successfully installed and loaded
Pass 1 parse of [DSDT]
Pass 2 parse of [DSDT]
Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)
Parsing completed
Disassembly completed
ASL Output: DSDT.dsl - 107876 bytes
Loading Acpi table from file FACP.dat
Acpi Data Table [FACP] decoded
Formatted output: FACP.dsl - 8970 bytes
Loading Acpi table from file FACS.dat
Acpi Data Table [FACS] decoded
Formatted output: FACS.dsl - 1343 bytes
Loading Acpi table from file HEST.dat
Acpi Data Table [HEST] decoded
Formatted output: HEST.dsl - 1136 bytes
Loading Acpi table from file HPET.dat
Acpi Data Table [HPET] decoded
Formatted output: HPET.dsl - 1840 bytes
Loading Acpi table from file RSDP.dat
Acpi Data Table [RSD ] decoded
Formatted output: RSDP.dsl - 748 bytes
Loading Acpi table from file RSDT.dat
Acpi Data Table [RSDT] decoded
Formatted output: RSDT.dsl - 1556 bytes
Loading Acpi table from file SSDT1.dat
Acpi table [SSDT] successfully installed and loaded
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)
Parsing completed
ACPI Error: Argument count mismatch for method _SB_.ALIC 6 2 (20130214/dmextern-448)
Found 1 external control methods, reparsing with new information
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)
Parsing completed
Disassembly completed
ASL Output: SSDT1.dsl - 39554 bytes
iASL Warning: There were 1 external control methods found during
disassembly, but additional ACPI tables to resolve these externals
were not specified. The resulting disassembler output file may not
compile because the disassembler did not know how many arguments
to assign to these methods. To specify the tables needed to resolve
external control method references, use the one of the following
example iASL invocations:
iasl -e <ssdt1.aml,ssdt2.aml...> -d <dsdt.aml>
iasl -e <dsdt.aml,ssdt2.aml...> -d <ssdt1.aml>
Loading Acpi table from file SSDT2.dat
Acpi table [SSDT] successfully installed and loaded
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)
Parsing completed
Disassembly completed
ASL Output: SSDT2.dsl - 9915 bytes
Loading Acpi table from file SSDT3.dat
Acpi table [SSDT] successfully installed and loaded
Pass 1 parse of [SSDT]
Pass 2 parse of [SSDT]
Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)
Parsing completed
Disassembly completed
ASL Output: SSDT3.dsl - 755 bytes
$ grep -i cd7 *dsl
$ grep -i cd6 *dsl
DSDT.dsl: OperationRegion (PIOR, SystemIO, 0x0CD6, 0x02)
SSDT1.dsl: OperationRegion (PMIO, SystemIO, 0x0CD6, 0x02)
$ grep -i b00 *dsl
DSDT.dsl: Name (_HID, EisaId ("PNP0B00")) // _HID: Hardware ID
DSDT.dsl: OperationRegion (SMB0, SystemIO, 0x0B00, 0x0C)
Unfortunately, I did not have time yet to look into this further.
Thanks,
Paul
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20130522/c696fec6/attachment.sig>
More information about the coreboot
mailing list