[coreboot] Why my ACPI device conflicts with "PCI Bus"

2016-08-22 Thread Zheng Bao
Hi, All,

I am debugging the UART device on Bettong(AMD Carrizo).


The device

"

Device(FUR0) {
Name(_HID,"AMD0020")
Name(_UID,0x0)
Name(_CRS, ResourceTemplate() {
IRQ(Edge, ActiveHigh, Exclusive) {10}
Memory32Fixed(ReadWrite, 0xFEDC6000, 0x2000)
})
Method (_STA, 0x0, NotSerialized) {
Return (0x0F)
}
}
"

is  added to DSDT. On linux, it doesnt show any error or warning. On Windows,

the device manager can show the DEVICE "AMD0020". But it says the 0xFEDC6000

is used by other device "PCI Bus".

I checked the whole DSDT and can not find which device conflicts with that?


Any suggestion what else I can check?


Zheng


dsdt-bettong-coreboot.dsl
Description: dsdt-bettong-coreboot.dsl


ssdt1-bettong-coreboot.dsl
Description: ssdt1-bettong-coreboot.dsl
-- 
coreboot mailing list: coreboot@coreboot.org
https://www.coreboot.org/mailman/listinfo/coreboot

Re: [coreboot] ASUS KFSN4-DRE (K8) Automated Test Failure [master]

2016-08-22 Thread Timothy Pearson
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 08/21/2016 03:48 PM, Raptor Engineering Automated Coreboot Test Stand
wrote:
> The ASUS KFSN4-DRE (K8) fails verification for branch master as of commit 
> 6268e2eecf235af9dd77b5f6cee8c0365fc5
> 
> The following tests failed:
> BOOT_FAILURE

Due to the continued presence of this regression in coreboot, and the
fact that no one has stepped up to work on it, we have disabled the AMD
K8 tests on our REACTS system.  This should restore the REACTS to its
intended functionality.

Should someone step up to work on the AMD K8 CAR and/or MCT code, which
appears to be at fault here, please send an Email with your proposed
changeset so that it can be tested and the K8 board re-added.

Thank you,

- -- 
Timothy Pearson
Raptor Engineering
+1 (415) 727-8645 (direct line)
+1 (512) 690-0200 (switchboard)
https://www.raptorengineering.com
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJXuyO5AAoJEK+E3vEXDOFb0cAIAIWD6Y7KBQIHxhAD1MP2PchG
JZYxNkHLbFk+ziENXd8zB74HFwsUiz2f1vdGuB2XlYv+aDMgBSvVhkb3NLBUSMXM
nOrJZvXtwoWOoZdHhCg/Htk9I4Qrg13+oV07YVriew5wsep1e0g4DNhs0tKLhYEV
1Wu+EKsgHxzSfVeqKKePV7b/Y4/zgbaoRRO058fAMdmZ16/QSkcndIhv8ZLepKuZ
B9tvxEfG66VJwDn6R4URCCBKJkoEtkan2QKYMltpTCU1EbMRb6tB3qDUQI35UcNr
oDqKoo9ybkoQHpb2L5pTVx5pCsz24Qw/pg74FNcbUK4lDyG+X+yEorEGW/f2byg=
=QH75
-END PGP SIGNATURE-

-- 
coreboot mailing list: coreboot@coreboot.org
https://www.coreboot.org/mailman/listinfo/coreboot


Re: [coreboot] Why my ACPI device conflicts with "PCI Bus"

2016-08-22 Thread Marshall Dawson
Hi Zheng,

What version of Windows are you using?  I've seen differences in the
behavior of the arbiters as Windows has matured.  I don't notice anything
incorrect in your ASL.  Does your FUR1 device come up with no conflicts,
and only FUR0 has problems?

Are you able to run WinDbg and get the failure?  Depending on the
generation, you might have Ethernet or USB available for debug as well, if
you need a different option.  I might start with this:
https://msdn.microsoft.com/en-us/library/windows/hardware/ff562124(v=vs.85).aspx
... using "!arbiter 2" to dump the memory assigned in the system.  That
would hopefully show you the conflict ('C' flag) and ownership, possibly
giving you additional clues and a direction to look.  In theory, this
should be somewhat identical to looking at resources-by-connection in the
Device Manager, but you'll have more options for debugging.

Maybe also dump the device tree with "!devnode 0 1" and make sure items are
scoped where you believe they should be.

The fact that FEDC6000 is used by PCI Bus seems pretty odd, like the bus
consumes the memory without bridging or arbitrating it.  Unless I missed
it, I don't see anything like that in your DSDT.  As an experiment, maybe
try adding a ResourceProducer for FEDC6000 under PCI0 and see if the
problem goes away.  If it does, I'll have to think more about what that
means.

Thanks,
Marshall


On Mon, Aug 22, 2016 at 6:20 AM, Zheng Bao  wrote:

> Hi, All,
>
> I am debugging the UART device on Bettong(AMD Carrizo).
>
>
> The device
>
> "
> Device(FUR0) {
> Name(_HID,"AMD0020")
> Name(_UID,0x0)
> Name(_CRS, ResourceTemplate() {
> IRQ(Edge, ActiveHigh, Exclusive) {10}
> Memory32Fixed(ReadWrite, 0xFEDC6000, 0x2000)
> })
> Method (_STA, 0x0, NotSerialized) {
> Return (0x0F)
> }
> }
> "
>
> is  added to DSDT. On linux, it doesnt show any error or warning. On
> Windows,
>
> the device manager can show the DEVICE "AMD0020". But it says the
> 0xFEDC6000
>
> is used by other device "PCI Bus".
>
> I checked the whole DSDT and can not find which device conflicts with that?
>
>
> Any suggestion what else I can check?
>
>
> Zheng
>
> --
> coreboot mailing list: coreboot@coreboot.org
> https://www.coreboot.org/mailman/listinfo/coreboot
>
-- 
coreboot mailing list: coreboot@coreboot.org
https://www.coreboot.org/mailman/listinfo/coreboot

[coreboot] New on blogs.coreboot.org: [GSOC] Panic Room, week #8, *

2016-08-22 Thread WordPress
A new post titled "[GSOC] Panic Room, week #8,*" has been published on the coreboot blog. Find the full post at http://blogs.coreboot.org/blog/2016/08/22/gsoc-panic-room-week-8-onward/

What have you worked on during the past few weeks?
I tried to finish one of the optional goals of my proposal:
a way to access a payload (possibly a recovery) after the hardware initialisation is complete but the OS has still not taken over.
To define it in more practical terms, I wanted to replace the running payload at the press of a predefined button.
I started by looking into the SMM (System Management Mode) and in particular the SMI (System Management Interrupts) handlers defined by each target board in the coreboot tree.
That was the easy part, it took just a bit of probing my board (Lenovo x60) and a serial cable to retrieve some of the SMI button codes (I planned on using the ThinkAdvantage button, code 0x19).
I added it to the appropriate smihandler.c file, defined the behaviour and that was about it.
The more difficult part was actually implementing a way to make it possible to boot a new payload while in SMM.
SMM can be considered a separate “module” from romstage, etc, this consequently means that it does not have access to all of the same functions.
In particular it cannot access the load_payload() and run_payload() functions defined inside prog_loaders.c, which, as the name implies, are necessary in order to use a payload.
In order to solve the problem I came up with two designs:

The first design is quite simple, but in my opinion a bit messy.
It involves including all of the missing source files into the SMM module at compile time, a.k.a adding more entries inside the Makefile.inc scattered around the source tree.
I went down this route for a while until I stumbled on a function that needed to use a malloc(), this was expected so I included the definition of that function.
It then asked to have access to the heap (_eheap) in order to allocate the memory requested, the problem is that the heap is not defined inside SMM.
I grepped through the source code and found very little about what I was supposed to do in order to define it, so I had to let it go.
(To add a little bit of context, this was yesterday and if you take a look at this post’s date you’ll realise that there is only 1 day left of GSoC, panic!)
The second approach consists of leaving SMM mostly as it is now, and instead find a way to communicate with ramstage, in order to boot the desired payload.
The thought process was that, if cannot call a function directly from SMM, I would have to use the functions already in place in ramstage, unfortunately those functions are called only once, after the initialisation is done.
This is where the CMOS memory comes in, I modified the payload loading process and instead of using an hard-coded path defined at compile-time, I made it check for a string inside CMOS and use that as the payload path.
This method, however, also presented some problems:
– It seems that currently cmos.defaults is completely ignored and the CMOS string values are not initialised as intended (at least on my board), therefore the payload path resulted always blank.
– There needs to be quite a bite of space in the CMOS to keep the path there.
The usual path (fallback/payload), occupies around 160 contiguous bits of the 1024 available ones, which also need to share space with other important configuration bits such as RTC, etc.
In order to circumvent these limitations it would be possible to replace the string path in the CMOS with an enumeration of the possible paths, this however would need to be defined, maintained and shared both in the CMOS and the rest of coreboot.
However, same as above, I ran out of time.

That about sums it up for the past few weeks.
Thank you for reading and have a nice week.


-- 
coreboot mailing list: coreboot@coreboot.org
https://www.coreboot.org/mailman/listinfo/coreboot