Page 2 of 2

Re: MMIO_Starting_Physical_Address

Posted: Sat Aug 14, 2021 11:53 am
by Octocontrabass
Klakap wrote:As Occontrabass noted, you have to search RSDP in memory from 0xE0000 to 0xFFFFF as first. Only if you can not found RSDP in this memory, you can move to Bios EBDA area.
Aren't you supposed to search the EBDA first?

Re: MMIO_Starting_Physical_Address

Posted: Sat Aug 14, 2021 12:01 pm
by Klakap
Oh I am sorry, but from my tests on real computers is RSDP rather on BIOS ROM than EDBA.

Re: MMIO_Starting_Physical_Address

Posted: Sun Aug 15, 2021 4:32 am
by Rukog
The length of my XSDT.Entry is equal to 19 address of 64-bit and all are 32-bit lenght, weird considering I have 16 GB of RAM.
Image

The red rectangle is the first address of my XSDT.Entry

Is it the same for all of you ?

Re: MMIO_Starting_Physical_Address

Posted: Sun Aug 15, 2021 6:41 am
by nullplan
Rukog wrote:The length of my XSDT.Entry is equal to 19 address of 64-bit and all are 32-bit lenght, weird considering I have 16 GB of RAM.
Not really. Read-only tables will be in ROM, which is typically in the low 4GB, and tables with changing/configuration-dependent content will be in some RAM area the firmware reserves to itself, which again is probably going to be in the low 4GB, if for no other reason then to be accessible to unpaged 32-bit mode, which is a possible configuration for the firmware.

Or put it another way: 4GB is really enough for all ACPI tables, isn't it? So why should any tables be beyond the 4GB line?

That said, never assume that the tables are in the low 4GB, even though they likely are. You never know when some firmware is going to decide to do something different, and the interface provides for large addresses.

Re: MMIO_Starting_Physical_Address

Posted: Sun Aug 15, 2021 7:05 am
by nexos
Rukog wrote:The length of my XSDT.Entry is equal to 19 address of 64-bit and all are 32-bit lenght, weird considering I have 16 GB of RAM.
I remember Brendan said back a long while ago (before I had an account :) ) that x86 system's RSDT and XSDT were probably the same, as for compatibility with 32 bit OSes, it wouldn't make sense to have two copies of ACPI tables in ROM or memory.

Re: MMIO_Starting_Physical_Address

Posted: Sun Aug 15, 2021 10:56 am
by Rukog
Ive finally retrieve the MCFG table 8)

Image

Re: MMIO_Starting_Physical_Address

Posted: Tue Aug 17, 2021 12:23 pm
by Rukog
Ive a doubt, ive dumped my
Memory Mapped Enhanced Configuration Space Base Address Allocation Structure
and I found that weird structure result
Untitled.jpg
The base address seems legit, but the group number is acting weird, the start and end bus seems OK tho.

Re: MMIO_Starting_Physical_Address

Posted: Tue Aug 17, 2021 12:34 pm
by Klakap
It seems that you have it. Try to search for some DeviceID and VendorID.

Re: MMIO_Starting_Physical_Address

Posted: Tue Aug 17, 2021 4:54 pm
by Octocontrabass
Rukog wrote:the group number is acting weird
How so? It looks normal to me.

Re: MMIO_Starting_Physical_Address

Posted: Thu Aug 19, 2021 11:44 am
by Rukog
Klakap wrote:It seems that you have it. Try to search for some DeviceID and VendorID.
Ok so ive finally success to dump the base address and ive that result.

Image

There is no signature of PCI device (ive a GTX 1060), is that normal ?
Octocontrabass wrote:
Rukog wrote:the group number is acting weird
How so? It looks normal to me.
Ye I thought that when seeing all those zero bytes heh.

Re: MMIO_Starting_Physical_Address

Posted: Thu Aug 19, 2021 1:03 pm
by Octocontrabass
Rukog wrote:There is no signature of PCI device (ive a GTX 1060), is that normal ?
According to the MCFG table, the memory-mapped extended configuration space covers 256 buses.

Each bus has 32 slots. Each slot has 8 functions. Each function has 4kiB of MMIO for the configuration space.

Since there are 8 functions per slot, each slot has 32kiB of MMIO. Since there are 32 slots per bus, each bus has 1MiB of MMIO.

So, it's probably in there, but there are 256 buses and 256MiB of MMIO. You'll have to enumerate the devices to find what you're looking for. (You don't have to check every single bus/slot/function, there are ways to enumerate PCI much more quickly than that.)