[Linaro-uefi,linaro-uefi,v2] Hisilicon/D05: return Eth2/Eth3/Eth6/Eth7 not present at dsdt table

Message ID 1482914571-40416-3-git-send-email-sunchenhui@huawei.com
State New
Headers show

Commit Message

Heyi Guo Dec. 28, 2016, 8:42 a.m.
From: Heyi Guo <heyi.guo@linaro.org>

D05 has 4 physical NIC ports, which can be extended to 8 ports using
an expansion card. However, the existing ACPI tables unconditionally
describes the potential maximum of 8.

This patch add _STA method to the extra 4 ports from ACPI.
The _STA will return the actual value when code has been
added to dynamically detect whether they are present.

This patch resolves https://bugs.linaro.org/show_bug.cgi?id=2714.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Heyi Guo <heyi.guo@linaro.org>
---
 Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

Comments

Heyi Guo Dec. 28, 2016, 8:47 a.m. | #1
Hi Leif,

Refine this path according you and Graeme's comments,

please help to review, thanks.


Thanks and Regards,

Heyi


在 2016/12/28 16:42, Chenhui Sun 写道:
> From: Heyi Guo <heyi.guo@linaro.org>
>
> D05 has 4 physical NIC ports, which can be extended to 8 ports using
> an expansion card. However, the existing ACPI tables unconditionally
> describes the potential maximum of 8.
>
> This patch add _STA method to the extra 4 ports from ACPI.
> The _STA will return the actual value when code has been
> added to dynamically detect whether they are present.
>
> This patch resolves https://bugs.linaro.org/show_bug.cgi?id=2714.
>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Heyi Guo <heyi.guo@linaro.org>
> ---
>   Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl | 16 ++++++++++++++++
>   1 file changed, 16 insertions(+)
>
> diff --git a/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl b/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl
> index 046257b..14a905d 100644
> --- a/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl
> +++ b/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl
> @@ -662,6 +662,10 @@ Scope(_SB)
>           Package () {"port-idx-in-ae", 2},
>         }
>       })
> +    Method (_STA, 0x0, NotSerialized)
> +    {
> +      Return (0)
> +    }
>     }
>     Device (ETH3) {
>       Name(_HID, "HISI00C2")
> @@ -674,6 +678,10 @@ Scope(_SB)
>           Package () {"port-idx-in-ae", 3},
>         }
>       })
> +    Method (_STA, 0x0, NotSerialized)
> +    {
> +      Return (0)
> +    }
>     }
>   
>     Device (ROCE) {
> @@ -1216,6 +1224,10 @@ Scope(_SB)
>           Package () {"port-idx-in-ae", 0},
>         }
>       })
> +    Method (_STA, 0x0, NotSerialized)
> +    {
> +      Return (0)
> +    }
>     }
>     Device (ETH7) {
>       Name(_HID, "HISI00C2")
> @@ -1228,6 +1240,10 @@ Scope(_SB)
>           Package () {"port-idx-in-ae", 1},
>         }
>       })
> +    Method (_STA, 0x0, NotSerialized)
> +    {
> +      Return (0)
> +    }
>     }
>   
>   }
Graeme Gregory Jan. 4, 2017, 11:49 a.m. | #2
On Wed, Dec 28, 2016 at 04:47:55PM +0800, Heyi Guo wrote:
> Hi Leif,

> 

> Refine this path according you and Graeme's comments,

> 

> please help to review, thanks.

> 

> 

> Thanks and Regards,

> 

> Heyi

> 

> 

> 在 2016/12/28 16:42, Chenhui Sun 写道:

> > From: Heyi Guo <heyi.guo@linaro.org>

> > 

> > D05 has 4 physical NIC ports, which can be extended to 8 ports using

> > an expansion card. However, the existing ACPI tables unconditionally

> > describes the potential maximum of 8.

> > 

> > This patch add _STA method to the extra 4 ports from ACPI.

> > The _STA will return the actual value when code has been

> > added to dynamically detect whether they are present.

> > 

> > This patch resolves https://bugs.linaro.org/show_bug.cgi?id=2714.

> > 

> > Contributed-under: TianoCore Contribution Agreement 1.0

> > Signed-off-by: Heyi Guo <heyi.guo@linaro.org>

> > ---

> >   Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl | 16 ++++++++++++++++

> >   1 file changed, 16 insertions(+)

> > 

> > diff --git a/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl b/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl

> > index 046257b..14a905d 100644

> > --- a/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl

> > +++ b/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl

> > @@ -662,6 +662,10 @@ Scope(_SB)

> >           Package () {"port-idx-in-ae", 2},

> >         }

> >       })


I think you misunderstood what I meant.

I meant something like (untested)

	Name (NICE, 0)

	Method (_STA, 0x0, NotSerialized)
	{
		Return (NICE);
	}

Then if my thinking is correct a later SSDT loaded when the extender is
present could then

	Store (\\_SB.XXXX.NICE, 1)

To change the status.

Otherwise if this does not work how I think it should this patch is fine
for me.

Thanks

Graeme


> > +    Method (_STA, 0x0, NotSerialized)

> > +    {

> > +      Return (0)

> > +    }

> >     }

> >     Device (ETH3) {

> >       Name(_HID, "HISI00C2")

> > @@ -674,6 +678,10 @@ Scope(_SB)

> >           Package () {"port-idx-in-ae", 3},

> >         }

> >       })

> > +    Method (_STA, 0x0, NotSerialized)

> > +    {

> > +      Return (0)

> > +    }

> >     }

> >     Device (ROCE) {

> > @@ -1216,6 +1224,10 @@ Scope(_SB)

> >           Package () {"port-idx-in-ae", 0},

> >         }

> >       })

> > +    Method (_STA, 0x0, NotSerialized)

> > +    {

> > +      Return (0)

> > +    }

> >     }

> >     Device (ETH7) {

> >       Name(_HID, "HISI00C2")

> > @@ -1228,6 +1240,10 @@ Scope(_SB)

> >           Package () {"port-idx-in-ae", 1},

> >         }

> >       })

> > +    Method (_STA, 0x0, NotSerialized)

> > +    {

> > +      Return (0)

> > +    }

> >     }

> >   }

>
Al Stone Jan. 4, 2017, 11:17 p.m. | #3
On 01/04/2017 04:49 AM, graeme.gregory@linaro.org wrote:
> On Wed, Dec 28, 2016 at 04:47:55PM +0800, Heyi Guo wrote:
>> Hi Leif,
>> 
>> Refine this path according you and Graeme's comments,
>> 
>> please help to review, thanks.
>> 
>> 
>> Thanks and Regards,
>> 
>> Heyi
>> 
>> 
>> 在 2016/12/28 16:42, Chenhui Sun 写道:
>>> From: Heyi Guo <heyi.guo@linaro.org>
>>> 
>>> D05 has 4 physical NIC ports, which can be extended to 8 ports using an
>>> expansion card. However, the existing ACPI tables unconditionally 
>>> describes the potential maximum of 8.
>>> 
>>> This patch add _STA method to the extra 4 ports from ACPI. The _STA
>>> will return the actual value when code has been added to dynamically
>>> detect whether they are present.
>>> 
>>> This patch resolves https://bugs.linaro.org/show_bug.cgi?id=2714.
>>> 
>>> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by:
>>> Heyi Guo <heyi.guo@linaro.org> --- 
>>> Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl | 16
>>> ++++++++++++++++ 1 file changed, 16 insertions(+)
>>> 
>>> diff --git a/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl
>>> b/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl index
>>> 046257b..14a905d 100644 ---
>>> a/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl +++
>>> b/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl @@ -662,6
>>> +662,10 @@ Scope(_SB) Package () {"port-idx-in-ae", 2}, } })
> 
> I think you misunderstood what I meant.
> 
> I meant something like (untested)
> 
> Name (NICE, 0)
> 
> Method (_STA, 0x0, NotSerialized) { Return (NICE); }
> 
> Then if my thinking is correct a later SSDT loaded when the extender is 
> present could then
> 
> Store (\\_SB.XXXX.NICE, 1)
> 
> To change the status.
> 
> Otherwise if this does not work how I think it should this patch is fine 
> for me.
> 
> Thanks
> 
> Graeme

The only caution with this I would provide is that all object definitions in an
SSDT that is dynamically loaded by default *replace* any existing object
definitions with the same name.  So, while I quite like the use of Name(NICE,0)
as suggested, that would only work if the SSDT being loaded does *not* contain
Device definitions for the ports.

I think you have several options here.

Let's assume you have Device ETH0-3 that are the devices always present, and
devices ETH4-7 that are the ones being dynamically added.  In all cases, I
would define ETH0-3 in the DSDT since they will always be present.

Option 1: define ETH4-7 in the DSDT *and* a dynamically loaded SSDT

   In this case, the DSDT might contain something like:

	Device (ETH4) {
		...
		Method (_STA, 0x0, NotSerialized) { Return (0) }
		...
	}

   and the SSDT that is loaded later on might look like this:

	Device (ETH4) {
		...
		Method (_STA, 0x0, NotSerialized) { Return (1) }
		...
	}

   When the SSDT is loaded, the definitions of ETH4-7 are replaced and the
   new _STA method is used.

Option 2: only define ETH4-7 in a dynamically loaded SSDT

   For this case, there would be no definition of ETH4-7 in the DSDT.  They
   would not exist at all since there is nothing to be enumerated in the ASL
   namespace.

   In the SSDT that gets loaded, each device would look something like this:

	Device (ETH4) {
		Name (_HID, xxxxxxxx)
		....
	}

   An _STA method could be added to Return(1) but would not be required since
   the ACPI interpreter will create it by default when Device(ETH4) is created
   in the namespace.  I personally would include just so I could put comments
   around it and explain what's happening.

Option 3: define ETH0-7 in the DSDT, add a dummy device in the SSDT

   In this case, we're using the Name(NICE) idea above.  The DSDT would contain
   a bit mask of define ETHx devices, and the _STA methods would test for their
   value.  Something like this:

	Scope (\_SB) {
		Name (MASK, 0x0f)	/* Defines only ETH0-3 as active */
		...
		Device (ETH0) {
			...
			Method (_STA, 0x0, NotSerialized) {
				If (And (\_SB.MASK, 0x1)) {
					Return (0x1)
				}
				Return (0x0)
			}
			...
		}
		...

		Device (ETH1) {
			...
			Method (_STA, 0x0, NotSerialized) {
				If (And (\_SB.MASK, 0x2)) {
					Return (0x1)
				}
				Return (0x0)
			}
			...
		}
		...
		
		Device (ETH7) {
			...
			Method (_STA, 0x0, NotSerialized) {
				If (And (\_SB.MASK, 0x80)) {
					Return (0x1)
				}
				Return (0x0)
			}
			...
		}
				
   In the SSDT, some new dummy device would have to be defined, and that might
   look like this:

	...
	Device (DUMY) {
		...
		Method (_INI, 0x0, Serialized) {
			Store(\_SB.MASK, 0xff)		/* Enable all ETHx */
		}
		...
	}

   When the SSDT gets loaded, the bit mask gets changed and the next time the
   _STA values are checked, the devices will be enabled.  You will have to force
   the device drivers to enable the new ports somehow (perhaps check the value
   of the \_SB.MASK object after the SSDT is loaded...).


Or, finally, Option 4: provide a simple status register somewhere

   This is essentially the same as Option 3.  The difference is that instead of
   defining Name(\_SB.MASK) as a variable, it's a hardware register in some
   OperationRegion.  If there is no expander, this read-only register returns
   0x0f; if there is an expander, it returns 0xff.  The DSDT _STA methods would
   simply test the register (the ASL might even be identical).  If the expander
   can only be added with power off, there would be no need to load an SSDT.


Of all these, Option 2 is simplest, but could allow the firmware to lie; if the
SSDT is loaded without the expander card being present, it is now incorrect.

Option 4 is probably optimal; the firmware and hardware can always be in sync
and consistent.  If you can't do Option 4, Option 3 is probably the most
flexible and maintainable over time, but could also cause problems if somehow
the SSDT is loaded without the expander being present.


>>> +    Method (_STA, 0x0, NotSerialized) +    { +      Return (0) +    } 
>>> } Device (ETH3) { Name(_HID, "HISI00C2") @@ -674,6 +678,10 @@
>>> Scope(_SB) Package () {"port-idx-in-ae", 3}, } }) +    Method (_STA,
>>> 0x0, NotSerialized) +    { +      Return (0) +    } } Device (ROCE) { 
>>> @@ -1216,6 +1224,10 @@ Scope(_SB) Package () {"port-idx-in-ae", 0}, } 
>>> }) +    Method (_STA, 0x0, NotSerialized) +    { +      Return (0) +
>>> } } Device (ETH7) { Name(_HID, "HISI00C2") @@ -1228,6 +1240,10 @@
>>> Scope(_SB) Package () {"port-idx-in-ae", 1}, } }) +    Method (_STA,
>>> 0x0, NotSerialized) +    { +      Return (0) +    } } }
>> 
>> 
>> 
>> _______________________________________________ Linaro-uefi mailing list 
>> Linaro-uefi@lists.linaro.org 
>> https://lists.linaro.org/mailman/listinfo/linaro-uefi
Graeme Gregory Jan. 5, 2017, 12:17 a.m. | #4
On Wed, Jan 04, 2017 at 04:17:13PM -0700, Al Stone wrote:
> On 01/04/2017 04:49 AM, graeme.gregory@linaro.org wrote:

> > On Wed, Dec 28, 2016 at 04:47:55PM +0800, Heyi Guo wrote:

> >> Hi Leif,

> >> 

> >> Refine this path according you and Graeme's comments,

> >> 

> >> please help to review, thanks.

> >> 

> >> 

> >> Thanks and Regards,

> >> 

> >> Heyi

> >> 

> >> 

> >> 在 2016/12/28 16:42, Chenhui Sun 写道:

> >>> From: Heyi Guo <heyi.guo@linaro.org>

> >>> 

> >>> D05 has 4 physical NIC ports, which can be extended to 8 ports using an

> >>> expansion card. However, the existing ACPI tables unconditionally 

> >>> describes the potential maximum of 8.

> >>> 

> >>> This patch add _STA method to the extra 4 ports from ACPI. The _STA

> >>> will return the actual value when code has been added to dynamically

> >>> detect whether they are present.

> >>> 

> >>> This patch resolves https://bugs.linaro.org/show_bug.cgi?id=2714.

> >>> 

> >>> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by:

> >>> Heyi Guo <heyi.guo@linaro.org> --- 

> >>> Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl | 16

> >>> ++++++++++++++++ 1 file changed, 16 insertions(+)

> >>> 

> >>> diff --git a/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl

> >>> b/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl index

> >>> 046257b..14a905d 100644 ---

> >>> a/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl +++

> >>> b/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl @@ -662,6

> >>> +662,10 @@ Scope(_SB) Package () {"port-idx-in-ae", 2}, } })

> > 

> > I think you misunderstood what I meant.

> > 

> > I meant something like (untested)

> > 

> > Name (NICE, 0)

> > 

> > Method (_STA, 0x0, NotSerialized) { Return (NICE); }

> > 

> > Then if my thinking is correct a later SSDT loaded when the extender is 

> > present could then

> > 

> > Store (\\_SB.XXXX.NICE, 1)

> > 

> > To change the status.

> > 

> > Otherwise if this does not work how I think it should this patch is fine 

> > for me.

> > 

> > Thanks

> > 

> > Graeme

> 

> The only caution with this I would provide is that all object definitions in an

> SSDT that is dynamically loaded by default *replace* any existing object

> definitions with the same name.  So, while I quite like the use of Name(NICE,0)

> as suggested, that would only work if the SSDT being loaded does *not* contain

> Device definitions for the ports.

> 

> I think you have several options here.

> 

> Let's assume you have Device ETH0-3 that are the devices always present, and

> devices ETH4-7 that are the ones being dynamically added.  In all cases, I

> would define ETH0-3 in the DSDT since they will always be present.

> 

> Option 1: define ETH4-7 in the DSDT *and* a dynamically loaded SSDT

> 

>    In this case, the DSDT might contain something like:

> 

> 	Device (ETH4) {

> 		...

> 		Method (_STA, 0x0, NotSerialized) { Return (0) }

> 		...

> 	}

> 

>    and the SSDT that is loaded later on might look like this:

> 

> 	Device (ETH4) {

> 		...

> 		Method (_STA, 0x0, NotSerialized) { Return (1) }

> 		...

> 	}

> 

>    When the SSDT is loaded, the definitions of ETH4-7 are replaced and the

>    new _STA method is used.

> 


And this is why I ask experts, I had totally forgotten about that, and
in fact if Heyi wants to use Option 1: this file already does that!

Graeme

> Option 2: only define ETH4-7 in a dynamically loaded SSDT

> 

>    For this case, there would be no definition of ETH4-7 in the DSDT.  They

>    would not exist at all since there is nothing to be enumerated in the ASL

>    namespace.

> 

>    In the SSDT that gets loaded, each device would look something like this:

> 

> 	Device (ETH4) {

> 		Name (_HID, xxxxxxxx)

> 		....

> 	}

> 

>    An _STA method could be added to Return(1) but would not be required since

>    the ACPI interpreter will create it by default when Device(ETH4) is created

>    in the namespace.  I personally would include just so I could put comments

>    around it and explain what's happening.

> 

> Option 3: define ETH0-7 in the DSDT, add a dummy device in the SSDT

> 

>    In this case, we're using the Name(NICE) idea above.  The DSDT would contain

>    a bit mask of define ETHx devices, and the _STA methods would test for their

>    value.  Something like this:

> 

> 	Scope (\_SB) {

> 		Name (MASK, 0x0f)	/* Defines only ETH0-3 as active */

> 		...

> 		Device (ETH0) {

> 			...

> 			Method (_STA, 0x0, NotSerialized) {

> 				If (And (\_SB.MASK, 0x1)) {

> 					Return (0x1)

> 				}

> 				Return (0x0)

> 			}

> 			...

> 		}

> 		...

> 

> 		Device (ETH1) {

> 			...

> 			Method (_STA, 0x0, NotSerialized) {

> 				If (And (\_SB.MASK, 0x2)) {

> 					Return (0x1)

> 				}

> 				Return (0x0)

> 			}

> 			...

> 		}

> 		...

> 		

> 		Device (ETH7) {

> 			...

> 			Method (_STA, 0x0, NotSerialized) {

> 				If (And (\_SB.MASK, 0x80)) {

> 					Return (0x1)

> 				}

> 				Return (0x0)

> 			}

> 			...

> 		}

> 				

>    In the SSDT, some new dummy device would have to be defined, and that might

>    look like this:

> 

> 	...

> 	Device (DUMY) {

> 		...

> 		Method (_INI, 0x0, Serialized) {

> 			Store(\_SB.MASK, 0xff)		/* Enable all ETHx */

> 		}

> 		...

> 	}

> 

>    When the SSDT gets loaded, the bit mask gets changed and the next time the

>    _STA values are checked, the devices will be enabled.  You will have to force

>    the device drivers to enable the new ports somehow (perhaps check the value

>    of the \_SB.MASK object after the SSDT is loaded...).

> 

> 

> Or, finally, Option 4: provide a simple status register somewhere

> 

>    This is essentially the same as Option 3.  The difference is that instead of

>    defining Name(\_SB.MASK) as a variable, it's a hardware register in some

>    OperationRegion.  If there is no expander, this read-only register returns

>    0x0f; if there is an expander, it returns 0xff.  The DSDT _STA methods would

>    simply test the register (the ASL might even be identical).  If the expander

>    can only be added with power off, there would be no need to load an SSDT.

> 

> 

> Of all these, Option 2 is simplest, but could allow the firmware to lie; if the

> SSDT is loaded without the expander card being present, it is now incorrect.

> 

> Option 4 is probably optimal; the firmware and hardware can always be in sync

> and consistent.  If you can't do Option 4, Option 3 is probably the most

> flexible and maintainable over time, but could also cause problems if somehow

> the SSDT is loaded without the expander being present.

> 

> 

> >>> +    Method (_STA, 0x0, NotSerialized) +    { +      Return (0) +    } 

> >>> } Device (ETH3) { Name(_HID, "HISI00C2") @@ -674,6 +678,10 @@

> >>> Scope(_SB) Package () {"port-idx-in-ae", 3}, } }) +    Method (_STA,

> >>> 0x0, NotSerialized) +    { +      Return (0) +    } } Device (ROCE) { 

> >>> @@ -1216,6 +1224,10 @@ Scope(_SB) Package () {"port-idx-in-ae", 0}, } 

> >>> }) +    Method (_STA, 0x0, NotSerialized) +    { +      Return (0) +

> >>> } } Device (ETH7) { Name(_HID, "HISI00C2") @@ -1228,6 +1240,10 @@

> >>> Scope(_SB) Package () {"port-idx-in-ae", 1}, } }) +    Method (_STA,

> >>> 0x0, NotSerialized) +    { +      Return (0) +    } } }

> >> 

> >> 

> >> 

> >> _______________________________________________ Linaro-uefi mailing list 

> >> Linaro-uefi@lists.linaro.org 

> >> https://lists.linaro.org/mailman/listinfo/linaro-uefi

> 

> 

> -- 

> ciao,

> al

> -----------------------------------

> Al Stone

> Software Engineer

> Linaro Enterprise Group

> al.stone@linaro.org

> -----------------------------------
Graeme Gregory Jan. 5, 2017, 10:19 a.m. | #5
On Wed, Dec 28, 2016 at 04:42:51PM +0800, Chenhui Sun wrote:
> From: Heyi Guo <heyi.guo@linaro.org>

> 

> D05 has 4 physical NIC ports, which can be extended to 8 ports using

> an expansion card. However, the existing ACPI tables unconditionally

> describes the potential maximum of 8.

> 

> This patch add _STA method to the extra 4 ports from ACPI.

> The _STA will return the actual value when code has been

> added to dynamically detect whether they are present.

> 

> This patch resolves https://bugs.linaro.org/show_bug.cgi?id=2714.

> 

> Contributed-under: TianoCore Contribution Agreement 1.0

> Signed-off-by: Heyi Guo <heyi.guo@linaro.org>


Given Als detailed email and the ability of Option 1 in that which I had
forgotten about then this is fine with me.

Reviewed-by: Graeme Gregory <graeme.gregory@linaro.org>


> ---

>  Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl | 16 ++++++++++++++++

>  1 file changed, 16 insertions(+)

> 

> diff --git a/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl b/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl

> index 046257b..14a905d 100644

> --- a/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl

> +++ b/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl

> @@ -662,6 +662,10 @@ Scope(_SB)

>          Package () {"port-idx-in-ae", 2},

>        }

>      })

> +    Method (_STA, 0x0, NotSerialized)

> +    {

> +      Return (0)

> +    }

>    }

>    Device (ETH3) {

>      Name(_HID, "HISI00C2")

> @@ -674,6 +678,10 @@ Scope(_SB)

>          Package () {"port-idx-in-ae", 3},

>        }

>      })

> +    Method (_STA, 0x0, NotSerialized)

> +    {

> +      Return (0)

> +    }

>    }

>  

>    Device (ROCE) {

> @@ -1216,6 +1224,10 @@ Scope(_SB)

>          Package () {"port-idx-in-ae", 0},

>        }

>      })

> +    Method (_STA, 0x0, NotSerialized)

> +    {

> +      Return (0)

> +    }

>    }

>    Device (ETH7) {

>      Name(_HID, "HISI00C2")

> @@ -1228,6 +1240,10 @@ Scope(_SB)

>          Package () {"port-idx-in-ae", 1},

>        }

>      })

> +    Method (_STA, 0x0, NotSerialized)

> +    {

> +      Return (0)

> +    }

>    }

>  

>  }

> -- 

> 1.9.1

>
Heyi Guo Jan. 9, 2017, 7:23 a.m. | #6
Hi Leif,

Could you help to review this path? if it is ok please help to push it. 
Thanks.
The commit also could be found in 
http://git.linaro.org/uefi/OpenPlatformPkg.git (rp-16.12-04-all)


Thanks and Regards,
Heyi.


在 2017/1/5 18:19, graeme.gregory@linaro.org 写道:
> On Wed, Dec 28, 2016 at 04:42:51PM +0800, Chenhui Sun wrote:
>> From: Heyi Guo <heyi.guo@linaro.org>
>>
>> D05 has 4 physical NIC ports, which can be extended to 8 ports using
>> an expansion card. However, the existing ACPI tables unconditionally
>> describes the potential maximum of 8.
>>
>> This patch add _STA method to the extra 4 ports from ACPI.
>> The _STA will return the actual value when code has been
>> added to dynamically detect whether they are present.
>>
>> This patch resolves https://bugs.linaro.org/show_bug.cgi?id=2714.
>>
>> Contributed-under: TianoCore Contribution Agreement 1.0
>> Signed-off-by: Heyi Guo <heyi.guo@linaro.org>
> Given Als detailed email and the ability of Option 1 in that which I had
> forgotten about then this is fine with me.
>
> Reviewed-by: Graeme Gregory <graeme.gregory@linaro.org>
>
>> ---
>>   Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl | 16 ++++++++++++++++
>>   1 file changed, 16 insertions(+)
>>
>> diff --git a/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl b/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl
>> index 046257b..14a905d 100644
>> --- a/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl
>> +++ b/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl
>> @@ -662,6 +662,10 @@ Scope(_SB)
>>           Package () {"port-idx-in-ae", 2},
>>         }
>>       })
>> +    Method (_STA, 0x0, NotSerialized)
>> +    {
>> +      Return (0)
>> +    }
>>     }
>>     Device (ETH3) {
>>       Name(_HID, "HISI00C2")
>> @@ -674,6 +678,10 @@ Scope(_SB)
>>           Package () {"port-idx-in-ae", 3},
>>         }
>>       })
>> +    Method (_STA, 0x0, NotSerialized)
>> +    {
>> +      Return (0)
>> +    }
>>     }
>>   
>>     Device (ROCE) {
>> @@ -1216,6 +1224,10 @@ Scope(_SB)
>>           Package () {"port-idx-in-ae", 0},
>>         }
>>       })
>> +    Method (_STA, 0x0, NotSerialized)
>> +    {
>> +      Return (0)
>> +    }
>>     }
>>     Device (ETH7) {
>>       Name(_HID, "HISI00C2")
>> @@ -1228,6 +1240,10 @@ Scope(_SB)
>>           Package () {"port-idx-in-ae", 1},
>>         }
>>       })
>> +    Method (_STA, 0x0, NotSerialized)
>> +    {
>> +      Return (0)
>> +    }
>>     }
>>   
>>   }
>> -- 
>> 1.9.1
>>
Heyi Guo Jan. 9, 2017, 9:23 a.m. | #7
sorry, correct the path to 
http://git.linaro.org/people/heyi.guo/OpenPlatformPkg.git


在 2017/1/9 15:23, Heyi Guo 写道:
> Hi Leif,
>
> Could you help to review this path? if it is ok please help to push 
> it. Thanks.
> The commit also could be found in 
> http://git.linaro.org/uefi/OpenPlatformPkg.git (rp-16.12-04-all)
>
>
> Thanks and Regards,
> Heyi.
>
>
> 在 2017/1/5 18:19, graeme.gregory@linaro.org 写道:
>> On Wed, Dec 28, 2016 at 04:42:51PM +0800, Chenhui Sun wrote:
>>> From: Heyi Guo <heyi.guo@linaro.org>
>>>
>>> D05 has 4 physical NIC ports, which can be extended to 8 ports using
>>> an expansion card. However, the existing ACPI tables unconditionally
>>> describes the potential maximum of 8.
>>>
>>> This patch add _STA method to the extra 4 ports from ACPI.
>>> The _STA will return the actual value when code has been
>>> added to dynamically detect whether they are present.
>>>
>>> This patch resolves https://bugs.linaro.org/show_bug.cgi?id=2714.
>>>
>>> Contributed-under: TianoCore Contribution Agreement 1.0
>>> Signed-off-by: Heyi Guo <heyi.guo@linaro.org>
>> Given Als detailed email and the ability of Option 1 in that which I had
>> forgotten about then this is fine with me.
>>
>> Reviewed-by: Graeme Gregory <graeme.gregory@linaro.org>
>>
>>> ---
>>>   Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl | 16 
>>> ++++++++++++++++
>>>   1 file changed, 16 insertions(+)
>>>
>>> diff --git a/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl 
>>> b/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl
>>> index 046257b..14a905d 100644
>>> --- a/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl
>>> +++ b/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl
>>> @@ -662,6 +662,10 @@ Scope(_SB)
>>>           Package () {"port-idx-in-ae", 2},
>>>         }
>>>       })
>>> +    Method (_STA, 0x0, NotSerialized)
>>> +    {
>>> +      Return (0)
>>> +    }
>>>     }
>>>     Device (ETH3) {
>>>       Name(_HID, "HISI00C2")
>>> @@ -674,6 +678,10 @@ Scope(_SB)
>>>           Package () {"port-idx-in-ae", 3},
>>>         }
>>>       })
>>> +    Method (_STA, 0x0, NotSerialized)
>>> +    {
>>> +      Return (0)
>>> +    }
>>>     }
>>>       Device (ROCE) {
>>> @@ -1216,6 +1224,10 @@ Scope(_SB)
>>>           Package () {"port-idx-in-ae", 0},
>>>         }
>>>       })
>>> +    Method (_STA, 0x0, NotSerialized)
>>> +    {
>>> +      Return (0)
>>> +    }
>>>     }
>>>     Device (ETH7) {
>>>       Name(_HID, "HISI00C2")
>>> @@ -1228,6 +1240,10 @@ Scope(_SB)
>>>           Package () {"port-idx-in-ae", 1},
>>>         }
>>>       })
>>> +    Method (_STA, 0x0, NotSerialized)
>>> +    {
>>> +      Return (0)
>>> +    }
>>>     }
>>>     }
>>> -- 
>>> 1.9.1
>>>
>

Patch hide | download patch | download mbox

diff --git a/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl b/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl
index 046257b..14a905d 100644
--- a/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl
+++ b/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl
@@ -662,6 +662,10 @@  Scope(_SB)
         Package () {"port-idx-in-ae", 2},
       }
     })
+    Method (_STA, 0x0, NotSerialized)
+    {
+      Return (0)
+    }
   }
   Device (ETH3) {
     Name(_HID, "HISI00C2")
@@ -674,6 +678,10 @@  Scope(_SB)
         Package () {"port-idx-in-ae", 3},
       }
     })
+    Method (_STA, 0x0, NotSerialized)
+    {
+      Return (0)
+    }
   }
 
   Device (ROCE) {
@@ -1216,6 +1224,10 @@  Scope(_SB)
         Package () {"port-idx-in-ae", 0},
       }
     })
+    Method (_STA, 0x0, NotSerialized)
+    {
+      Return (0)
+    }
   }
   Device (ETH7) {
     Name(_HID, "HISI00C2")
@@ -1228,6 +1240,10 @@  Scope(_SB)
         Package () {"port-idx-in-ae", 1},
       }
     })
+    Method (_STA, 0x0, NotSerialized)
+    {
+      Return (0)
+    }
   }
 
 }