Re: [edk2] [PATCH edk2-platforms 5/8] Silicon/SynQuacer: disable PCI RC #0 DT node if disabled

2017-12-12 Thread Leif Lindholm
On Tue, Dec 12, 2017 at 06:09:13PM +, Ard Biesheuvel wrote:
> On 12 December 2017 at 17:50, Leif Lindholm  wrote:
> > On Tue, Dec 12, 2017 at 05:35:15PM +, Ard Biesheuvel wrote:
> >> On 12 December 2017 at 17:32, Leif Lindholm  
> >> wrote:
> >> > Suggested subject tweak:
> >> > Silicon/SynQuacer: disable PCI RC #0 DT node if disabled ->
> >> > Silicon/SynQuacer: disable PCI RC DT node if RC disabled.
> >> >
> >>
> >> Ack. It's out of date, as you probably suspected
> >>
> >> > The code below will disable either #0 or #1 node if not enabled by
> >> > Pcd.
> >> >
> >> > On Tue, Dec 12, 2017 at 10:38:04AM +, Ard Biesheuvel wrote:
> >> >> If PCIe RC #0 is not enabled (due to the fact that the slot is not
> >> >> populated), set its DT node 'status' property to 'disabled' so that
> >> >> the OS will not attempt to attach to it.
> >> >>
> >> >> This means we will need to switch from the default 
> >> >> DtPlatformDtbLoaderLib
> >> >> to a special one for our platform.
> >> >>
> >> >> Contributed-under: TianoCore Contribution Agreement 1.1
> >> >> Signed-off-by: Ard Biesheuvel 
> >> >> ---
> >> >>  Platform/Socionext/DeveloperBox/DeveloperBox.dsc   
> >> >>  |  8 +-
> >> >>  Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc   
> >> >>  |  3 +-
> >> >>  
> >> >> Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
> >> >>| 94 
> >> >>  
> >> >> Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.inf
> >> >>  | 42 +
> >> >>  4 files changed, 141 insertions(+), 6 deletions(-)
> >> >>
> >> >> diff --git a/Platform/Socionext/DeveloperBox/DeveloperBox.dsc 
> >> >> b/Platform/Socionext/DeveloperBox/DeveloperBox.dsc
> >> >> index 5ec26f9cdd34..80728fedbc20 100644
> >> >> --- a/Platform/Socionext/DeveloperBox/DeveloperBox.dsc
> >> >> +++ b/Platform/Socionext/DeveloperBox/DeveloperBox.dsc
> >> >> @@ -160,7 +160,8 @@ [LibraryClasses.common.DXE_CORE]
> >> >>
> >> >> PerformanceLib|MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
> >> >>
> >> >>  [LibraryClasses.common.DXE_DRIVER]
> >> >> -  
> >> >> DtPlatformDtbLoaderLib|EmbeddedPkg/Library/DxeDtPlatformDtbLoaderLibDefault/DxeDtPlatformDtbLoaderLibDefault.inf
> >> >> +  
> >> >> DtPlatformDtbLoaderLib|Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.inf
> >> >> +  FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf
> >> >>
> >> >> SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
> >> >>
> >> >> PerformanceLib|MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf
> >> >>
> >> >> @@ -611,10 +612,7 @@ [Components.common]
> >> >>#
> >> >># Console preference selection
> >> >>#
> >> >> -  EmbeddedPkg/Drivers/ConsolePrefDxe/ConsolePrefDxe.inf {
> >> >> -
> >> >> -  FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf
> >> >> -  }
> >> >> +  EmbeddedPkg/Drivers/ConsolePrefDxe/ConsolePrefDxe.inf
> >> >>
> >> >>#
> >> >># DT support
> >> >> diff --git 
> >> >> a/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc 
> >> >> b/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc
> >> >> index bc8ddd452d4b..c71425664bdc 100644
> >> >> --- a/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc
> >> >> +++ b/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc
> >> >> @@ -159,7 +159,8 @@ [LibraryClasses.common.DXE_CORE]
> >> >>
> >> >> PerformanceLib|MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
> >> >>
> >> >>  [LibraryClasses.common.DXE_DRIVER]
> >> >> -  
> >> >> DtPlatformDtbLoaderLib|EmbeddedPkg/Library/DxeDtPlatformDtbLoaderLibDefault/DxeDtPlatformDtbLoaderLibDefault.inf
> >> >> +  
> >> >> DtPlatformDtbLoaderLib|Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.inf
> >> >> +  FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf
> >> >>
> >> >> SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
> >> >>
> >> >> PerformanceLib|MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf
> >> >>
> >> >> diff --git 
> >> >> a/Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
> >> >>  
> >> >> b/Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
> >> >> new file mode 100644
> >> >> index ..a93a6027e64d
> >> >> --- /dev/null
> >> >> +++ 
> >> >> b/Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
> >> >> @@ -0,0 +1,94 @@
> >> >> +/** @file
> >> >> +*
> >> >> +*  Copyright (c) 2017, Linaro, Ltd. All rights reserved.
> >> >> +*
> >> >> +*  This program and the accompanying materials
> >> >> +*  are licensed and made available under the terms and conditions of 
> >> >> the BSD License

Re: [edk2] [PATCH edk2-platforms 5/8] Silicon/SynQuacer: disable PCI RC #0 DT node if disabled

2017-12-12 Thread Ard Biesheuvel
On 12 December 2017 at 17:50, Leif Lindholm  wrote:
> On Tue, Dec 12, 2017 at 05:35:15PM +, Ard Biesheuvel wrote:
>> On 12 December 2017 at 17:32, Leif Lindholm  wrote:
>> > Suggested subject tweak:
>> > Silicon/SynQuacer: disable PCI RC #0 DT node if disabled ->
>> > Silicon/SynQuacer: disable PCI RC DT node if RC disabled.
>> >
>>
>> Ack. It's out of date, as you probably suspected
>>
>> > The code below will disable either #0 or #1 node if not enabled by
>> > Pcd.
>> >
>> > On Tue, Dec 12, 2017 at 10:38:04AM +, Ard Biesheuvel wrote:
>> >> If PCIe RC #0 is not enabled (due to the fact that the slot is not
>> >> populated), set its DT node 'status' property to 'disabled' so that
>> >> the OS will not attempt to attach to it.
>> >>
>> >> This means we will need to switch from the default DtPlatformDtbLoaderLib
>> >> to a special one for our platform.
>> >>
>> >> Contributed-under: TianoCore Contribution Agreement 1.1
>> >> Signed-off-by: Ard Biesheuvel 
>> >> ---
>> >>  Platform/Socionext/DeveloperBox/DeveloperBox.dsc 
>> >>|  8 +-
>> >>  Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc 
>> >>|  3 +-
>> >>  
>> >> Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
>> >>| 94 
>> >>  
>> >> Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.inf
>> >>  | 42 +
>> >>  4 files changed, 141 insertions(+), 6 deletions(-)
>> >>
>> >> diff --git a/Platform/Socionext/DeveloperBox/DeveloperBox.dsc 
>> >> b/Platform/Socionext/DeveloperBox/DeveloperBox.dsc
>> >> index 5ec26f9cdd34..80728fedbc20 100644
>> >> --- a/Platform/Socionext/DeveloperBox/DeveloperBox.dsc
>> >> +++ b/Platform/Socionext/DeveloperBox/DeveloperBox.dsc
>> >> @@ -160,7 +160,8 @@ [LibraryClasses.common.DXE_CORE]
>> >>
>> >> PerformanceLib|MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
>> >>
>> >>  [LibraryClasses.common.DXE_DRIVER]
>> >> -  
>> >> DtPlatformDtbLoaderLib|EmbeddedPkg/Library/DxeDtPlatformDtbLoaderLibDefault/DxeDtPlatformDtbLoaderLibDefault.inf
>> >> +  
>> >> DtPlatformDtbLoaderLib|Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.inf
>> >> +  FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf
>> >>
>> >> SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
>> >>
>> >> PerformanceLib|MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf
>> >>
>> >> @@ -611,10 +612,7 @@ [Components.common]
>> >>#
>> >># Console preference selection
>> >>#
>> >> -  EmbeddedPkg/Drivers/ConsolePrefDxe/ConsolePrefDxe.inf {
>> >> -
>> >> -  FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf
>> >> -  }
>> >> +  EmbeddedPkg/Drivers/ConsolePrefDxe/ConsolePrefDxe.inf
>> >>
>> >>#
>> >># DT support
>> >> diff --git a/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc 
>> >> b/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc
>> >> index bc8ddd452d4b..c71425664bdc 100644
>> >> --- a/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc
>> >> +++ b/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc
>> >> @@ -159,7 +159,8 @@ [LibraryClasses.common.DXE_CORE]
>> >>
>> >> PerformanceLib|MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
>> >>
>> >>  [LibraryClasses.common.DXE_DRIVER]
>> >> -  
>> >> DtPlatformDtbLoaderLib|EmbeddedPkg/Library/DxeDtPlatformDtbLoaderLibDefault/DxeDtPlatformDtbLoaderLibDefault.inf
>> >> +  
>> >> DtPlatformDtbLoaderLib|Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.inf
>> >> +  FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf
>> >>
>> >> SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
>> >>
>> >> PerformanceLib|MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf
>> >>
>> >> diff --git 
>> >> a/Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
>> >>  
>> >> b/Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
>> >> new file mode 100644
>> >> index ..a93a6027e64d
>> >> --- /dev/null
>> >> +++ 
>> >> b/Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
>> >> @@ -0,0 +1,94 @@
>> >> +/** @file
>> >> +*
>> >> +*  Copyright (c) 2017, Linaro, Ltd. All rights reserved.
>> >> +*
>> >> +*  This program and the accompanying materials
>> >> +*  are licensed and made available under the terms and conditions of the 
>> >> BSD License
>> >> +*  which accompanies this distribution.  The full text of the license 
>> >> may be found at
>> >> +*  http://opensource.org/licenses/bsd-license.php
>> >> +*
>> >> +*  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
>> >> +*  WITHOUT WARRANTIES OR REPRESENTATIONS OF 

Re: [edk2] [PATCH edk2-platforms 5/8] Silicon/SynQuacer: disable PCI RC #0 DT node if disabled

2017-12-12 Thread Leif Lindholm
On Tue, Dec 12, 2017 at 05:35:15PM +, Ard Biesheuvel wrote:
> On 12 December 2017 at 17:32, Leif Lindholm  wrote:
> > Suggested subject tweak:
> > Silicon/SynQuacer: disable PCI RC #0 DT node if disabled ->
> > Silicon/SynQuacer: disable PCI RC DT node if RC disabled.
> >
> 
> Ack. It's out of date, as you probably suspected
> 
> > The code below will disable either #0 or #1 node if not enabled by
> > Pcd.
> >
> > On Tue, Dec 12, 2017 at 10:38:04AM +, Ard Biesheuvel wrote:
> >> If PCIe RC #0 is not enabled (due to the fact that the slot is not
> >> populated), set its DT node 'status' property to 'disabled' so that
> >> the OS will not attempt to attach to it.
> >>
> >> This means we will need to switch from the default DtPlatformDtbLoaderLib
> >> to a special one for our platform.
> >>
> >> Contributed-under: TianoCore Contribution Agreement 1.1
> >> Signed-off-by: Ard Biesheuvel 
> >> ---
> >>  Platform/Socionext/DeveloperBox/DeveloperBox.dsc  
> >>   |  8 +-
> >>  Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc  
> >>   |  3 +-
> >>  
> >> Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
> >>| 94 
> >>  
> >> Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.inf
> >>  | 42 +
> >>  4 files changed, 141 insertions(+), 6 deletions(-)
> >>
> >> diff --git a/Platform/Socionext/DeveloperBox/DeveloperBox.dsc 
> >> b/Platform/Socionext/DeveloperBox/DeveloperBox.dsc
> >> index 5ec26f9cdd34..80728fedbc20 100644
> >> --- a/Platform/Socionext/DeveloperBox/DeveloperBox.dsc
> >> +++ b/Platform/Socionext/DeveloperBox/DeveloperBox.dsc
> >> @@ -160,7 +160,8 @@ [LibraryClasses.common.DXE_CORE]
> >>
> >> PerformanceLib|MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
> >>
> >>  [LibraryClasses.common.DXE_DRIVER]
> >> -  
> >> DtPlatformDtbLoaderLib|EmbeddedPkg/Library/DxeDtPlatformDtbLoaderLibDefault/DxeDtPlatformDtbLoaderLibDefault.inf
> >> +  
> >> DtPlatformDtbLoaderLib|Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.inf
> >> +  FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf
> >>
> >> SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
> >>
> >> PerformanceLib|MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf
> >>
> >> @@ -611,10 +612,7 @@ [Components.common]
> >>#
> >># Console preference selection
> >>#
> >> -  EmbeddedPkg/Drivers/ConsolePrefDxe/ConsolePrefDxe.inf {
> >> -
> >> -  FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf
> >> -  }
> >> +  EmbeddedPkg/Drivers/ConsolePrefDxe/ConsolePrefDxe.inf
> >>
> >>#
> >># DT support
> >> diff --git a/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc 
> >> b/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc
> >> index bc8ddd452d4b..c71425664bdc 100644
> >> --- a/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc
> >> +++ b/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc
> >> @@ -159,7 +159,8 @@ [LibraryClasses.common.DXE_CORE]
> >>
> >> PerformanceLib|MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
> >>
> >>  [LibraryClasses.common.DXE_DRIVER]
> >> -  
> >> DtPlatformDtbLoaderLib|EmbeddedPkg/Library/DxeDtPlatformDtbLoaderLibDefault/DxeDtPlatformDtbLoaderLibDefault.inf
> >> +  
> >> DtPlatformDtbLoaderLib|Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.inf
> >> +  FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf
> >>
> >> SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
> >>
> >> PerformanceLib|MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf
> >>
> >> diff --git 
> >> a/Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
> >>  
> >> b/Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
> >> new file mode 100644
> >> index ..a93a6027e64d
> >> --- /dev/null
> >> +++ 
> >> b/Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
> >> @@ -0,0 +1,94 @@
> >> +/** @file
> >> +*
> >> +*  Copyright (c) 2017, Linaro, Ltd. All rights reserved.
> >> +*
> >> +*  This program and the accompanying materials
> >> +*  are licensed and made available under the terms and conditions of the 
> >> BSD License
> >> +*  which accompanies this distribution.  The full text of the license may 
> >> be found at
> >> +*  http://opensource.org/licenses/bsd-license.php
> >> +*
> >> +*  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> >> +*  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR 
> >> IMPLIED.
> >> +*
> >> +**/
> >> +
> >> +#include 
> >> +
> >> +#include 
> >> +#include 
> >> +#include 
> >> +#include 
> >> +#include 
> >> +
> >> 

Re: [edk2] [PATCH edk2-platforms 5/8] Silicon/SynQuacer: disable PCI RC #0 DT node if disabled

2017-12-12 Thread Ard Biesheuvel
On 12 December 2017 at 17:32, Leif Lindholm  wrote:
> Suggested subject tweak:
> Silicon/SynQuacer: disable PCI RC #0 DT node if disabled ->
> Silicon/SynQuacer: disable PCI RC DT node if RC disabled.
>

Ack. It's out of date, as you probably suspected

> The code below will disable either #0 or #1 node if not enabled by
> Pcd.
>
> On Tue, Dec 12, 2017 at 10:38:04AM +, Ard Biesheuvel wrote:
>> If PCIe RC #0 is not enabled (due to the fact that the slot is not
>> populated), set its DT node 'status' property to 'disabled' so that
>> the OS will not attempt to attach to it.
>>
>> This means we will need to switch from the default DtPlatformDtbLoaderLib
>> to a special one for our platform.
>>
>> Contributed-under: TianoCore Contribution Agreement 1.1
>> Signed-off-by: Ard Biesheuvel 
>> ---
>>  Platform/Socionext/DeveloperBox/DeveloperBox.dsc
>> |  8 +-
>>  Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc
>> |  3 +-
>>  
>> Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
>>| 94 
>>  
>> Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.inf
>>  | 42 +
>>  4 files changed, 141 insertions(+), 6 deletions(-)
>>
>> diff --git a/Platform/Socionext/DeveloperBox/DeveloperBox.dsc 
>> b/Platform/Socionext/DeveloperBox/DeveloperBox.dsc
>> index 5ec26f9cdd34..80728fedbc20 100644
>> --- a/Platform/Socionext/DeveloperBox/DeveloperBox.dsc
>> +++ b/Platform/Socionext/DeveloperBox/DeveloperBox.dsc
>> @@ -160,7 +160,8 @@ [LibraryClasses.common.DXE_CORE]
>>
>> PerformanceLib|MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
>>
>>  [LibraryClasses.common.DXE_DRIVER]
>> -  
>> DtPlatformDtbLoaderLib|EmbeddedPkg/Library/DxeDtPlatformDtbLoaderLibDefault/DxeDtPlatformDtbLoaderLibDefault.inf
>> +  
>> DtPlatformDtbLoaderLib|Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.inf
>> +  FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf
>>
>> SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
>>
>> PerformanceLib|MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf
>>
>> @@ -611,10 +612,7 @@ [Components.common]
>>#
>># Console preference selection
>>#
>> -  EmbeddedPkg/Drivers/ConsolePrefDxe/ConsolePrefDxe.inf {
>> -
>> -  FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf
>> -  }
>> +  EmbeddedPkg/Drivers/ConsolePrefDxe/ConsolePrefDxe.inf
>>
>>#
>># DT support
>> diff --git a/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc 
>> b/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc
>> index bc8ddd452d4b..c71425664bdc 100644
>> --- a/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc
>> +++ b/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc
>> @@ -159,7 +159,8 @@ [LibraryClasses.common.DXE_CORE]
>>
>> PerformanceLib|MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
>>
>>  [LibraryClasses.common.DXE_DRIVER]
>> -  
>> DtPlatformDtbLoaderLib|EmbeddedPkg/Library/DxeDtPlatformDtbLoaderLibDefault/DxeDtPlatformDtbLoaderLibDefault.inf
>> +  
>> DtPlatformDtbLoaderLib|Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.inf
>> +  FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf
>>
>> SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
>>
>> PerformanceLib|MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf
>>
>> diff --git 
>> a/Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
>>  
>> b/Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
>> new file mode 100644
>> index ..a93a6027e64d
>> --- /dev/null
>> +++ 
>> b/Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
>> @@ -0,0 +1,94 @@
>> +/** @file
>> +*
>> +*  Copyright (c) 2017, Linaro, Ltd. All rights reserved.
>> +*
>> +*  This program and the accompanying materials
>> +*  are licensed and made available under the terms and conditions of the 
>> BSD License
>> +*  which accompanies this distribution.  The full text of the license may 
>> be found at
>> +*  http://opensource.org/licenses/bsd-license.php
>> +*
>> +*  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
>> +*  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR 
>> IMPLIED.
>> +*
>> +**/
>> +
>> +#include 
>> +
>> +#include 
>> +#include 
>> +#include 
>> +#include 
>> +#include 
>> +
>> +#define DTB_PADDING   64
>
> If there isn't a simplish way of determining this value
> arithmetically, can you add a comment explaining why 64 is sufficient?
>

Something like

// add enough space for two instances of 'status = "disabled"'

?


>> +STATIC
>> +VOID
>> +DisableDtNode (
>> +  IN  VOID 

Re: [edk2] [PATCH edk2-platforms 5/8] Silicon/SynQuacer: disable PCI RC #0 DT node if disabled

2017-12-12 Thread Leif Lindholm
Suggested subject tweak:
Silicon/SynQuacer: disable PCI RC #0 DT node if disabled ->
Silicon/SynQuacer: disable PCI RC DT node if RC disabled.

The code below will disable either #0 or #1 node if not enabled by
Pcd.

On Tue, Dec 12, 2017 at 10:38:04AM +, Ard Biesheuvel wrote:
> If PCIe RC #0 is not enabled (due to the fact that the slot is not
> populated), set its DT node 'status' property to 'disabled' so that
> the OS will not attempt to attach to it.
> 
> This means we will need to switch from the default DtPlatformDtbLoaderLib
> to a special one for our platform.
> 
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Ard Biesheuvel 
> ---
>  Platform/Socionext/DeveloperBox/DeveloperBox.dsc 
>|  8 +-
>  Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc 
>|  3 +-
>  
> Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
>| 94 
>  
> Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.inf
>  | 42 +
>  4 files changed, 141 insertions(+), 6 deletions(-)
> 
> diff --git a/Platform/Socionext/DeveloperBox/DeveloperBox.dsc 
> b/Platform/Socionext/DeveloperBox/DeveloperBox.dsc
> index 5ec26f9cdd34..80728fedbc20 100644
> --- a/Platform/Socionext/DeveloperBox/DeveloperBox.dsc
> +++ b/Platform/Socionext/DeveloperBox/DeveloperBox.dsc
> @@ -160,7 +160,8 @@ [LibraryClasses.common.DXE_CORE]
>
> PerformanceLib|MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
>  
>  [LibraryClasses.common.DXE_DRIVER]
> -  
> DtPlatformDtbLoaderLib|EmbeddedPkg/Library/DxeDtPlatformDtbLoaderLibDefault/DxeDtPlatformDtbLoaderLibDefault.inf
> +  
> DtPlatformDtbLoaderLib|Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.inf
> +  FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf
>
> SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
>PerformanceLib|MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf
>  
> @@ -611,10 +612,7 @@ [Components.common]
>#
># Console preference selection
>#
> -  EmbeddedPkg/Drivers/ConsolePrefDxe/ConsolePrefDxe.inf {
> -
> -  FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf
> -  }
> +  EmbeddedPkg/Drivers/ConsolePrefDxe/ConsolePrefDxe.inf
>  
>#
># DT support
> diff --git a/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc 
> b/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc
> index bc8ddd452d4b..c71425664bdc 100644
> --- a/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc
> +++ b/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc
> @@ -159,7 +159,8 @@ [LibraryClasses.common.DXE_CORE]
>
> PerformanceLib|MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
>  
>  [LibraryClasses.common.DXE_DRIVER]
> -  
> DtPlatformDtbLoaderLib|EmbeddedPkg/Library/DxeDtPlatformDtbLoaderLibDefault/DxeDtPlatformDtbLoaderLibDefault.inf
> +  
> DtPlatformDtbLoaderLib|Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.inf
> +  FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf
>
> SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
>PerformanceLib|MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf
>  
> diff --git 
> a/Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
>  
> b/Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
> new file mode 100644
> index ..a93a6027e64d
> --- /dev/null
> +++ 
> b/Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
> @@ -0,0 +1,94 @@
> +/** @file
> +*
> +*  Copyright (c) 2017, Linaro, Ltd. All rights reserved.
> +*
> +*  This program and the accompanying materials
> +*  are licensed and made available under the terms and conditions of the BSD 
> License
> +*  which accompanies this distribution.  The full text of the license may be 
> found at
> +*  http://opensource.org/licenses/bsd-license.php
> +*
> +*  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> +*  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR 
> IMPLIED.
> +*
> +**/
> +
> +#include 
> +
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +
> +#define DTB_PADDING   64

If there isn't a simplish way of determining this value
arithmetically, can you add a comment explaining why 64 is sufficient?

/
Leif

> +
> +STATIC
> +VOID
> +DisableDtNode (
> +  IN  VOID*Dtb,
> +  IN  CONST CHAR8 *NodePath
> +  )
> +{
> +  INT32   Node;
> +  INT32   Rc;
> +
> +  Node = fdt_path_offset (Dtb, NodePath);
> +  if (Node < 0) {
> +DEBUG ((DEBUG_ERROR, "%a: failed to locate DT path '%a': %a\n",
> +  

Re: [edk2] [PATCH edk2-platforms 5/8] Silicon/SynQuacer: disable PCI RC #0 DT node if disabled

2017-12-12 Thread Ard Biesheuvel
On 12 December 2017 at 10:38, Ard Biesheuvel  wrote:
> If PCIe RC #0 is not enabled (due to the fact that the slot is not
> populated), set its DT node 'status' property to 'disabled' so that
> the OS will not attempt to attach to it.
>
> This means we will need to switch from the default DtPlatformDtbLoaderLib
> to a special one for our platform.
>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Ard Biesheuvel 
> ---
>  Platform/Socionext/DeveloperBox/DeveloperBox.dsc 
>|  8 +-
>  Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc 
>|  3 +-
>  
> Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
>| 94 
>  
> Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.inf
>  | 42 +
>  4 files changed, 141 insertions(+), 6 deletions(-)
>
> diff --git a/Platform/Socionext/DeveloperBox/DeveloperBox.dsc 
> b/Platform/Socionext/DeveloperBox/DeveloperBox.dsc
> index 5ec26f9cdd34..80728fedbc20 100644
> --- a/Platform/Socionext/DeveloperBox/DeveloperBox.dsc
> +++ b/Platform/Socionext/DeveloperBox/DeveloperBox.dsc
> @@ -160,7 +160,8 @@ [LibraryClasses.common.DXE_CORE]
>
> PerformanceLib|MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
>
>  [LibraryClasses.common.DXE_DRIVER]
> -  
> DtPlatformDtbLoaderLib|EmbeddedPkg/Library/DxeDtPlatformDtbLoaderLibDefault/DxeDtPlatformDtbLoaderLibDefault.inf
> +  
> DtPlatformDtbLoaderLib|Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.inf
> +  FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf
>
> SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
>PerformanceLib|MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf
>
> @@ -611,10 +612,7 @@ [Components.common]
>#
># Console preference selection
>#
> -  EmbeddedPkg/Drivers/ConsolePrefDxe/ConsolePrefDxe.inf {
> -
> -  FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf
> -  }
> +  EmbeddedPkg/Drivers/ConsolePrefDxe/ConsolePrefDxe.inf
>
>#
># DT support
> diff --git a/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc 
> b/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc
> index bc8ddd452d4b..c71425664bdc 100644
> --- a/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc
> +++ b/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc
> @@ -159,7 +159,8 @@ [LibraryClasses.common.DXE_CORE]
>
> PerformanceLib|MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
>
>  [LibraryClasses.common.DXE_DRIVER]
> -  
> DtPlatformDtbLoaderLib|EmbeddedPkg/Library/DxeDtPlatformDtbLoaderLibDefault/DxeDtPlatformDtbLoaderLibDefault.inf
> +  
> DtPlatformDtbLoaderLib|Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.inf
> +  FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf
>
> SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
>PerformanceLib|MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf
>
> diff --git 
> a/Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
>  
> b/Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
> new file mode 100644
> index ..a93a6027e64d
> --- /dev/null
> +++ 
> b/Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
> @@ -0,0 +1,94 @@
> +/** @file
> +*
> +*  Copyright (c) 2017, Linaro, Ltd. All rights reserved.
> +*
> +*  This program and the accompanying materials
> +*  are licensed and made available under the terms and conditions of the BSD 
> License
> +*  which accompanies this distribution.  The full text of the license may be 
> found at
> +*  http://opensource.org/licenses/bsd-license.php
> +*
> +*  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> +*  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR 
> IMPLIED.
> +*
> +**/
> +
> +#include 
> +
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +
> +#define DTB_PADDING   64
> +
> +STATIC
> +VOID
> +DisableDtNode (
> +  IN  VOID*Dtb,
> +  IN  CONST CHAR8 *NodePath
> +  )
> +{
> +  INT32   Node;
> +  INT32   Rc;
> +
> +  Node = fdt_path_offset (Dtb, NodePath);
> +  if (Node < 0) {
> +DEBUG ((DEBUG_ERROR, "%a: failed to locate DT path '%a': %a\n",
> +  __FUNCTION__, NodePath, fdt_strerror (Node)));
> +return;
> +  }
> +  Rc = fdt_setprop_string (Dtb, Node, "status", "disabled");
> +  if (Rc < 0) {
> +DEBUG ((DEBUG_ERROR, "%a: failed to set status to 'disabled' on '%a': 
> %a\n",
> +  __FUNCTION__, NodePath, fdt_strerror (Rc)));
> +  }
> +}
> +
> +/**
> +  Return a pool allocated copy of the 

[edk2] [PATCH edk2-platforms 5/8] Silicon/SynQuacer: disable PCI RC #0 DT node if disabled

2017-12-12 Thread Ard Biesheuvel
If PCIe RC #0 is not enabled (due to the fact that the slot is not
populated), set its DT node 'status' property to 'disabled' so that
the OS will not attempt to attach to it.

This means we will need to switch from the default DtPlatformDtbLoaderLib
to a special one for our platform.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ard Biesheuvel 
---
 Platform/Socionext/DeveloperBox/DeveloperBox.dsc   
 |  8 +-
 Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc   
 |  3 +-
 
Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
   | 94 
 
Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.inf
 | 42 +
 4 files changed, 141 insertions(+), 6 deletions(-)

diff --git a/Platform/Socionext/DeveloperBox/DeveloperBox.dsc 
b/Platform/Socionext/DeveloperBox/DeveloperBox.dsc
index 5ec26f9cdd34..80728fedbc20 100644
--- a/Platform/Socionext/DeveloperBox/DeveloperBox.dsc
+++ b/Platform/Socionext/DeveloperBox/DeveloperBox.dsc
@@ -160,7 +160,8 @@ [LibraryClasses.common.DXE_CORE]
   
PerformanceLib|MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
 
 [LibraryClasses.common.DXE_DRIVER]
-  
DtPlatformDtbLoaderLib|EmbeddedPkg/Library/DxeDtPlatformDtbLoaderLibDefault/DxeDtPlatformDtbLoaderLibDefault.inf
+  
DtPlatformDtbLoaderLib|Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.inf
+  FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf
   
SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
   PerformanceLib|MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf
 
@@ -611,10 +612,7 @@ [Components.common]
   #
   # Console preference selection
   #
-  EmbeddedPkg/Drivers/ConsolePrefDxe/ConsolePrefDxe.inf {
-
-  FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf
-  }
+  EmbeddedPkg/Drivers/ConsolePrefDxe/ConsolePrefDxe.inf
 
   #
   # DT support
diff --git a/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc 
b/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc
index bc8ddd452d4b..c71425664bdc 100644
--- a/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc
+++ b/Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc
@@ -159,7 +159,8 @@ [LibraryClasses.common.DXE_CORE]
   
PerformanceLib|MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
 
 [LibraryClasses.common.DXE_DRIVER]
-  
DtPlatformDtbLoaderLib|EmbeddedPkg/Library/DxeDtPlatformDtbLoaderLibDefault/DxeDtPlatformDtbLoaderLibDefault.inf
+  
DtPlatformDtbLoaderLib|Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.inf
+  FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf
   
SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
   PerformanceLib|MdeModulePkg/Library/DxePerformanceLib/DxePerformanceLib.inf
 
diff --git 
a/Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
 
b/Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
new file mode 100644
index ..a93a6027e64d
--- /dev/null
+++ 
b/Silicon/Socionext/SynQuacer/Library/SynQuacerDtbLoaderLib/SynQuacerDtbLoaderLib.c
@@ -0,0 +1,94 @@
+/** @file
+*
+*  Copyright (c) 2017, Linaro, Ltd. All rights reserved.
+*
+*  This program and the accompanying materials
+*  are licensed and made available under the terms and conditions of the BSD 
License
+*  which accompanies this distribution.  The full text of the license may be 
found at
+*  http://opensource.org/licenses/bsd-license.php
+*
+*  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR 
IMPLIED.
+*
+**/
+
+#include 
+
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#define DTB_PADDING   64
+
+STATIC
+VOID
+DisableDtNode (
+  IN  VOID*Dtb,
+  IN  CONST CHAR8 *NodePath
+  )
+{
+  INT32   Node;
+  INT32   Rc;
+
+  Node = fdt_path_offset (Dtb, NodePath);
+  if (Node < 0) {
+DEBUG ((DEBUG_ERROR, "%a: failed to locate DT path '%a': %a\n",
+  __FUNCTION__, NodePath, fdt_strerror (Node)));
+return;
+  }
+  Rc = fdt_setprop_string (Dtb, Node, "status", "disabled");
+  if (Rc < 0) {
+DEBUG ((DEBUG_ERROR, "%a: failed to set status to 'disabled' on '%a': 
%a\n",
+  __FUNCTION__, NodePath, fdt_strerror (Rc)));
+  }
+}
+
+/**
+  Return a pool allocated copy of the DTB image that is appropriate for
+  booting the current platform via DT.
+
+  @param[out]   Dtb   Pointer to the DTB copy
+  @param[out]   DtbSize   Size of the DTB copy
+
+  @retval   EFI_SUCCESS   Operation completed successfully
+  @retval   EFI_NOT_FOUND No suitable DTB image