View unanswered posts | View active topics It is currently Fri Sep 20, 2019 8:01 am



Reply to topic  [ 12 posts ]  Go to page 1, 2  Next
 Problems with ACPI tables in BIOS FLT2.0.46.01.00 
Author Message

Joined: Fri Jan 11, 2019 1:41 am
Posts: 6
Post Problems with ACPI tables in BIOS FLT2.0.46.01.00
I'm currently developing an application which uses the embedded real-time OS "RTOS-32" by On-Time.

This relies on several data structures obtained from the BIOS/UEFI firmware to correctly intialize the system's hardware. One of these tables is the "MP Floating Pointer Table" which describes the PCI/PCIe interrupt routing for the APICs used.

The table in the fitlet2's BIOS (date 2018-09-17) seems to be faulty insofar as it contains entries that use an invalid APIC.

This is a textual dump of the table, created with a tool supplied by the RTOS' vendor:

Code:
> Found MP Floating Pointer Structure at 401036E0
> Conf Table at: 00000000
> Length       : 0
> Revision     : 0
> ConfType     : 0
> IMCR         : not present
>
> Table Header at: 401036F0
> Length         : 0
> Revision       : 0
> OEMID          :
> Product        :
> OEM Table Addr : 00000000
> Entry Count    : 39
> Local APIC Addr: FEE00000
>
> Bus 0: PCI
> Bus 99: PCI
> Bus 1: PCI
> Bus 2: PCI
> Bus 100: ISA
> IOAPIC, Id:32 at FEC00000, Flags: 01
> CPU with APIC Id: 0, Flags: 01, Sig: 00000000, Features: 00000200
> CPU with APIC Id: 2, Flags: 01, Sig: 00000000, Features: 00000200
> CPU with APIC Id: 4, Flags: 01, Sig: 00000000, Features: 00000200
> CPU with APIC Id: 6, Flags: 01, Sig: 00000000, Features: 00000200
> I/O Int 32: 2, Vectored, Bus 100, IRQ 0, Flags: [Edge, Active High]
> I/O Int 32: 9, Vectored, Bus 100, IRQ 9, Flags: [Level, Active Low]
> I/O Int 32:19, Vectored, Bus 0, Dev 2, Int A, Flags: [Level, Active Low]
> I/O Int 33: 1, Vectored, Bus 0, Dev 14, Int A, Flags: [Level, Active Low]
> I/O Int 32:20, Vectored, Bus 0, Dev 15, Int A, Flags: [Level, Active Low]
> I/O Int 32:19, Vectored, Bus 0, Dev 18, Int A, Flags: [Level, Active Low]
> I/O Int 32:22, Vectored, Bus 0, Dev 19, Int A, Flags: [Level, Active Low]
> I/O Int 32:23, Vectored, Bus 0, Dev 19, Int B, Flags: [Level, Active Low]
> I/O Int 32:20, Vectored, Bus 0, Dev 19, Int C, Flags: [Level, Active Low]
> I/O Int 32:21, Vectored, Bus 0, Dev 19, Int D, Flags: [Level, Active Low]
> I/O Int 32:17, Vectored, Bus 0, Dev 21, Int A, Flags: [Level, Active Low]
> I/O Int 33: 3, Vectored, Bus 0, Dev 22, Int A, Flags: [Level, Active Low]
> I/O Int 33: 4, Vectored, Bus 0, Dev 22, Int B, Flags: [Level, Active Low]
> I/O Int 33: 5, Vectored, Bus 0, Dev 22, Int C, Flags: [Level, Active Low]
> I/O Int 33: 6, Vectored, Bus 0, Dev 22, Int D, Flags: [Level, Active Low]
> I/O Int 33: 7, Vectored, Bus 0, Dev 23, Int A, Flags: [Level, Active Low]
> I/O Int 33: 8, Vectored, Bus 0, Dev 23, Int B, Flags: [Level, Active Low]
> I/O Int 33: 9, Vectored, Bus 0, Dev 23, Int C, Flags: [Level, Active Low]
> I/O Int 33:10, Vectored, Bus 0, Dev 23, Int D, Flags: [Level, Active Low]
> I/O Int 32: 4, Vectored, Bus 0, Dev 24, Int A, Flags: [Level, Active Low]
> I/O Int 32: 5, Vectored, Bus 0, Dev 24, Int B, Flags: [Level, Active Low]
> I/O Int 32: 6, Vectored, Bus 0, Dev 24, Int C, Flags: [Level, Active Low]
> I/O Int 32: 7, Vectored, Bus 0, Dev 24, Int D, Flags: [Level, Active Low]
> I/O Int 32: 3, Vectored, Bus 0, Dev 27, Int A, Flags: [Level, Active Low]
> I/O Int 33:15, Vectored, Bus 0, Dev 28, Int A, Flags: [Level, Active Low]
> I/O Int 33:18, Vectored, Bus 0, Dev 30, Int A, Flags: [Level, Active Low]
> I/O Int 32:20, Vectored, Bus 0, Dev 31, Int A, Flags: [Level, Active Low]
> I/O Int 32:23, Vectored, Bus 1, Dev 0, Int A, Flags: [Level, Active Low]
> I/O Int 32:20, Vectored, Bus 2, Dev 0, Int A, Flags: [Level, Active Low]


The numbers following "I/O Int" specifiy the APIC and the APIC's interrupt number. 32 stands for the first APIC in the system, 33 is faulty, since the table does not contain a definition for that APIC.

Though it is possible to manually construct a replacement to this table, this is quite an error-prone process, and has not been necessary on several other systems I'm running my application on.

These systems come with correct ACPI tables, so the problem seems not to be a generic problem of the RTOS.

These systems are the Intel NUC DN2820FYKH (Celeron N2830), the Gigabyte BRIX BACE3000 (Celeron N3000) and the Aaeon UpBoard (Atom x5-z8350).

Apparently the "MP Floating Pointer Table" might be not the only problem, there's also something very strange going on with the system's timers, but that might well be related to my manual replacement of the table.

Is there any hope for an updated BIOS/UEFI firmware that contains corrected APCI tables?

Thanks for any information


Wed Jan 16, 2019 2:36 pm
Profile
Site Admin

Joined: Mon Dec 25, 2017 4:21 pm
Posts: 345
Post Re: Problems with ACPI tables in BIOS FLT2.0.46.01.00
Forwarded the information to our R&D to investigate.
Will reply as soon as possible.


Thu Jan 17, 2019 3:02 pm
Profile
Site Admin

Joined: Mon Dec 25, 2017 4:21 pm
Posts: 345
Post Re: Problems with ACPI tables in BIOS FLT2.0.46.01.00
Sent a PM


Sun Jan 20, 2019 1:24 pm
Profile
Site Admin

Joined: Mon Dec 25, 2017 4:21 pm
Posts: 345
Post Re: Problems with ACPI tables in BIOS FLT2.0.46.01.00
A support request has been initiated with the BIOS vendor.
Could you please state in which mode have you install your OS with - UEFI or Legacy?


Wed Jan 23, 2019 11:24 am
Profile

Joined: Fri Jan 11, 2019 1:41 am
Posts: 6
Post Re: Problems with ACPI tables in BIOS FLT2.0.46.01.00
The OS itself is a 32-Bit-OS, the UEFI boot code used can handle either x64 or x86 systems.

Here's a description of the boot process:
http://www.on-time.com/rtos-32-docs/rtt ... rget/uefi/

In my current testing environment, the OS can be booted either from the SD card slot or an USB stick - the results (that is, problems) are the same.

Hope that helps

(I already sent this information as a "PM")


Thu Jan 24, 2019 9:18 am
Profile
Site Admin

Joined: Mon Dec 25, 2017 4:21 pm
Posts: 345
Post Re: Problems with ACPI tables in BIOS FLT2.0.46.01.00
Please provide the source code of the application that gets the MP floating table.


Sun Jan 27, 2019 9:10 am
Profile

Joined: Fri Jan 11, 2019 1:41 am
Posts: 6
Post Re: Problems with ACPI tables in BIOS FLT2.0.46.01.00
This is not possible, due to license issues.

But that's not the point, the information the MP floating table is created from is the problem, and the crucial step in the software can be described in simple terms.

The interrupt routing table can be found in the DSDT in a table named AR00. Here is given the PCI source interrupt (effectively, INTA to INTC) for every PCI/PCIe device, and the interrupt used on an IOAPIC.

The (closed source) software scans the table and determines which IOAPIC to use by looking at the interrupt number; if it's in the range 0 to 23, the primary IOAPIC gets used, if it's in the range 24 to 47, a second IOAPIC gets used and so on.

The table found in the firmware for the fitlet2 uses interrupt numbers well above 23, which implies the use of a second IOAPIC.

But the DSDT does not contain information on a secondary IOAPIC.

So either the information on that second IOAPIC is missing or the interrupt routing table itself is faulty.

I've looked at the DSDTs for several systems and have only once seen more than one IOAPIC in use, that was a XEON multiprocessor system made by DELL.


Mon Jan 28, 2019 8:55 am
Profile
Site Admin

Joined: Mon Dec 25, 2017 4:21 pm
Posts: 345
Post Re: Problems with ACPI tables in BIOS FLT2.0.46.01.00
Thank you for the information.
We'll communicate this to the BIOS vendor.


Wed Jan 30, 2019 9:18 am
Profile
Site Admin

Joined: Mon Dec 25, 2017 4:21 pm
Posts: 345
Post Re: Problems with ACPI tables in BIOS FLT2.0.46.01.00
The BIOS vendor would like to get the application, not its source code, would that be possible ?


Sun Feb 03, 2019 8:17 am
Profile

Joined: Fri Jan 11, 2019 1:41 am
Posts: 6
Post Re: Problems with ACPI tables in BIOS FLT2.0.46.01.00
The application itself would be quite useless, since it relies on specialized hardware it works with.

I'll work out some kind of test program to demonstrate the problems.

Thanks again for your support


Wed Feb 06, 2019 10:21 am
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 12 posts ]  Go to page 1, 2  Next

Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by STSoftware for PTF.