Re: [edk2] [PATCH v2] MdeModulePkg: Enable SATA Controller PCI mem space

2018-06-19 Thread Sami Mujawar
Hi Star,

My sincere apologies for getting your name wrong. For some reason my email 
client displays your name as 'surname, name'. However, it is still my fault.
I will ensure I address you correctly in the future.

Hi Lazlo,
Thanks for letting me know.

Regards,

Sami Mujawar

-Original Message-
From: Laszlo Ersek  
Sent: 18 June 2018 04:52 PM
To: Sami Mujawar ; edk2-devel@lists.01.org
Cc: ruiyu...@intel.com; nd ; Stephanie Hughes-Fitt 
; eric.d...@intel.com; 
ard.biesheu...@linaro.org; leif.lindh...@linaro.org; star.z...@intel.com
Subject: Re: [edk2] [PATCH v2] MdeModulePkg: Enable SATA Controller PCI mem 
space

off-topic:

On 06/15/18 16:13, Sami Mujawar wrote:
> - Enable IO space, suggestion to use EFI_PCI_DEVICE_ENABLE[ZENG]

My understanding is that "Star" is Star's given name, and "Zeng" is his 
surname. Let's not start calling each other by surname, shall we?

(Email addresses under @intel.com seem to follow the "given-name.surname" or 
"given-name.middle-initial.surname" pattern.)

Thanks,
Laszlo
___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


Re: [edk2] [PATCH v2] MdeModulePkg: Enable SATA Controller PCI mem space

2018-06-18 Thread Zeng, Star
Hi Sami,

I will have feedback in the V1 patch thread based on your response there.

Thanks,
Star
-Original Message-
From: Sami Mujawar [mailto:sami.muja...@arm.com] 
Sent: Friday, June 15, 2018 10:14 PM
To: edk2-devel@lists.01.org
Cc: Zeng, Star ; Dong, Eric ; Ni, 
Ruiyu ; ard.biesheu...@linaro.org; 
leif.lindh...@linaro.org; matteo.carl...@arm.com; 
stephanie.hughes-f...@arm.com; evan.ll...@arm.com; thomas.abra...@arm.com; 
n...@arm.com
Subject: [PATCH v2] MdeModulePkg: Enable SATA Controller PCI mem space

The SATA controller driver crashes while accessing the PCI memory [AHCI Base 
Registers (ABAR)], as the PCI memory space is not enabled.

Enable the PCI memory space access to prevent the SATA Controller driver from 
crashing.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Sami Mujawar 
---
The changes can be viewed at 
https://github.com/samimujawar/edk2/tree/284_sata_controler_pci_mem_fix_v2

Notes:
v2:
- Improved log message and code documentation based on feedback   [SAMI]
- Enable IO space, suggestion to use EFI_PCI_DEVICE_ENABLE[ZENG]
- This SATA Controller driver only uses the PCI BAR5 register
  space which is the AHCI Base Address (ABAR). According to the
  'Serial ATA Advanced Host Controller Interface (AHCI) 1.3.1'
  specification, section 2.1.11, 'This register allocates space
  for the HBA memory registers'.
  The section 2.1.10, allows provision for Optional BARs which
  may support either memory or I/O spaces. However, in the context
  of the current SATA controller driver, which only ever access
  the ABAR, enabling I/O memory space is not required.[SAMI]
- Prefer to use // surrounding comments   [ZENG]
- Doing this would violate the edk2 coding standard. See EDK2
  Coding Standard Specification, revision 2.20, section 6.2.3.[SAMI]

v1:
- Fix SATA Controller driver crash[SAMI]

 MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.c | 80 
+++-  MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.h | 
 7 ++
 2 files changed, 86 insertions(+), 1 deletion(-)

diff --git a/MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.c 
b/MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.c
index 
a6d55c15571728eb3fd572003f383ba7c86635ae..faf1b62e81000449e43e5298bb8ff885e48e4318
 100644
--- a/MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.c
+++ b/MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.c
@@ -2,6 +2,7 @@
   This driver module produces IDE_CONTROLLER_INIT protocol for Sata 
Controllers.
 
   Copyright (c) 2011 - 2016, Intel Corporation. All rights reserved.
+  Copyright (c) 2018, ARM 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 @@ -364,6 +365,7 @@ SataControllerStart (
   EFI_SATA_CONTROLLER_PRIVATE_DATA  *Private;
   UINT32Data32;
   UINTN TotalCount;
+  UINT64PciAttributes;
 
   DEBUG ((EFI_D_INFO, "SataControllerStart start\n"));
 
@@ -406,6 +408,61 @@ SataControllerStart (
   Private->IdeInit.CalculateMode  = IdeInitCalculateMode;
   Private->IdeInit.SetTiming  = IdeInitSetTiming;
   Private->IdeInit.EnumAll= SATA_ENUMER_ALL;
+  Private->PciAttributesChanged   = FALSE;
+
+  // Save original PCI attributes
+  Status = PciIo->Attributes (
+PciIo,
+EfiPciIoAttributeOperationGet,
+0,
+>OriginalPciAttributes
+);
+  if (EFI_ERROR (Status)) {
+  goto Done;
+  }
+
+  DEBUG ((
+EFI_D_INFO,
+"Original PCI Attributes = 0x%llx\n",
+Private->OriginalPciAttributes
+));
+
+  if ((Private->OriginalPciAttributes & EFI_PCI_IO_ATTRIBUTE_MEMORY) == 0) {
+Status = PciIo->Attributes (
+  PciIo,
+  EfiPciIoAttributeOperationSupported,
+  0,
+  
+  );
+if (EFI_ERROR (Status)) {
+  goto Done;
+}
+
+DEBUG ((EFI_D_INFO, "Supported PCI Attributes = 0x%llx\n", 
+ PciAttributes));
+
+if ((PciAttributes & EFI_PCI_IO_ATTRIBUTE_MEMORY) == 0) {
+  DEBUG ((
+EFI_D_ERROR,
+"Error: EFI_PCI_IO_ATTRIBUTE_MEMORY not supported\n"
+));
+  Status = EFI_UNSUPPORTED;
+  goto Done;
+}
+
+PciAttributes = Private->OriginalPciAttributes | 
+ EFI_PCI_IO_ATTRIBUTE_MEMORY;
+
+DEBUG ((EFI_D_INFO, "Enable PCI Attributes = 0x%llx\n", PciAttributes));
+Status = PciIo->Attributes (
+  PciIo,
+  EfiPciIoAttributeOperationEnable,
+  PciAttributes,
+  NULL
+ 

Re: [edk2] [PATCH v2] MdeModulePkg: Enable SATA Controller PCI mem space

2018-06-18 Thread Zeng, Star
Never mind. :)

Thanks,
Star
-Original Message-
From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Evan 
Lloyd
Sent: Tuesday, June 19, 2018 1:19 AM
To: Laszlo Ersek ; Sami Mujawar ; 
edk2-devel@lists.01.org
Cc: Ni, Ruiyu ; Stephanie Hughes-Fitt 
; Dong, Eric ; 
ard.biesheu...@linaro.org; leif.lindh...@linaro.org; nd ; Zeng, 
Star 
Subject: Re: [edk2] [PATCH v2] MdeModulePkg: Enable SATA Controller PCI mem 
space

Hi Laszlo, Star.
Looking at the e-mail thread, I think I also made the mistake of getting Star's 
name inverted.
I'm sorry, especially as in this case it is not as unclear as some Chinese 
names can be for foreigners.  I can only put this one down to approaching 
senility.
 Sorry, Star - I'll try not to do it again.

Evan

> -Original Message-
> From: edk2-devel  On Behalf Of Laszlo 
> Ersek
> Sent: 18 June 2018 16:52
> To: Sami Mujawar ; edk2-devel@lists.01.org
> Cc: ruiyu...@intel.com; Stephanie Hughes-Fitt  f...@arm.com>; eric.d...@intel.com; ard.biesheu...@linaro.org; 
> leif.lindh...@linaro.org; nd ; star.z...@intel.com
> Subject: Re: [edk2] [PATCH v2] MdeModulePkg: Enable SATA Controller 
> PCI mem space
> 
> off-topic:
> 
> On 06/15/18 16:13, Sami Mujawar wrote:
> > - Enable IO space, suggestion to use EFI_PCI_DEVICE_ENABLE[ZENG]
> 
> My understanding is that "Star" is Star's given name, and "Zeng" is 
> his surname. Let's not start calling each other by surname, shall we?
> 
> (Email addresses under @intel.com seem to follow the "given- 
> name.surname" or "given-name.middle-initial.surname" pattern.)
> 
> Thanks,
> Laszlo
> ___
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


Re: [edk2] [PATCH v2] MdeModulePkg: Enable SATA Controller PCI mem space

2018-06-18 Thread Zeng, Star
Leif,

I totally agree with you.
Before we have clear direction about this to align code and CCS spec. I prefer 
to align with the immediately surrounding code.


Thanks,
Star
-Original Message-
From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Leif 
Lindholm
Sent: Saturday, June 16, 2018 12:13 AM
To: Evan Lloyd 
Cc: Ni, Ruiyu ; nd ; Stephanie Hughes-Fitt 
; Dong, Eric ; Ard 
Biesheuvel ; edk2-devel@lists.01.org; Zeng, Star 

Subject: Re: [edk2] [PATCH v2] MdeModulePkg: Enable SATA Controller PCI mem 
space

On Fri, Jun 15, 2018 at 03:26:54PM +, Evan Lloyd wrote:
> Hi Ard, Zeng
> 
> > -Original Message-
> > From: Ard Biesheuvel 
> > Sent: 15 June 2018 15:17
> > To: Sami Mujawar 
> > Cc: edk2-devel@lists.01.org; Zeng, Star ; Eric 
> > Dong ; Ruiyu Ni ; Leif 
> > Lindholm ; Matteo Carlini 
> > ; Stephanie Hughes-Fitt 
> > ; Evan Lloyd ; 
> > Thomas Abraham ; nd 
> > Subject: Re: [PATCH v2] MdeModulePkg: Enable SATA Controller PCI mem 
> > space
> > 
> > On 15 June 2018 at 16:13, Sami Mujawar  wrote:
> > > The SATA controller driver crashes while accessing the PCI memory 
> > > [AHCI Base Registers (ABAR)], as the PCI memory space is not enabled.
> > >
> > > Enable the PCI memory space access to prevent the SATA Controller 
> > > driver from crashing.
> > >
> > > Contributed-under: TianoCore Contribution Agreement 1.1
> > > Signed-off-by: Sami Mujawar 
> > > ---
> > > The changes can be viewed at
> > >
> > https://github.com/samimujawar/edk2/tree/284_sata_controler_pci_mem_
> > f
> > i
> > > x_v2
> > >
> > > Notes:
> > > v2:
> > > - Improved log message and code documentation based on 
> > > feedback
> > [SAMI]
> > > - Enable IO space, suggestion to use EFI_PCI_DEVICE_ENABLE
> > > [ZENG]
> > > - This SATA Controller driver only uses the PCI BAR5 register
> > >   space which is the AHCI Base Address (ABAR). According to the
> > >   'Serial ATA Advanced Host Controller Interface (AHCI) 1.3.1'
> > >   specification, section 2.1.11, 'This register allocates space
> > >   for the HBA memory registers'.
> > >   The section 2.1.10, allows provision for Optional BARs which
> > >   may support either memory or I/O spaces. However, in the context
> > >   of the current SATA controller driver, which only ever access
> > >   the ABAR, enabling I/O memory space is not required.
> > > [SAMI]
> > > - Prefer to use // surrounding comments   
> > > [ZENG]
> > > - Doing this would violate the edk2 coding standard. See EDK2
> > >   Coding Standard Specification, revision 2.20, section 6.2.3.
> > > [SAMI]
> > >
> > 
> > Please stop obsessing about the coding standard. The maintainer was 
> > quite clear what he wanted, and in the past, I have also indicated 
> > that for the ARM related packages, I prefer readability and 
> > consistency over adherence to a dubious standard.
> 
> [[Evan Lloyd]] I'd like to make some points here:
> 1.It is perfectly reasonable for Sami to explain why he has done
>   something a certain way - Zeng is then at liberty to respond
>   with his preference, but we do not (yet) know what that might
>   be.

Yes we do. Zeng responded with that in the first instance. Sami then disputed 
that explicitly stated preference, referring to the coding standard. There was 
no lack of clarity in what Zeng wanted - so I remain unclear on what this is 
intending to achieve?

> 2."readability and consistency" is the very purpose of any
>   coding standard.  If consistency is valuable, doesn't that
>   apply across modules?  I understand that it may be
>   particularly valuable for maintainers within their modules,
>   but the rest of us benefit from a consistent style -
>   especially when looking outside our normal demesne.

At which point the rule of thumb is: aligning with the immediately surrounding 
code always trumps adhering to the specified style.
Which is in itself trumped by the maintainer explicitly stating another 
preference. (Like here.)

> 3.Applying a consistent Coding Standard across the whole project
>   is a necessary pre-condition for automated CI checks on new
>   submissions.  I'd like to aim e.g. for an improved
>   patchcheck.py, but that requires consistency across modules,
>   at least for new code.

Such a system will _never_ be fully automatable.

I will _always_ ta

Re: [edk2] [PATCH v2] MdeModulePkg: Enable SATA Controller PCI mem space

2018-06-18 Thread Evan Lloyd
Hi Laszlo, Star.
Looking at the e-mail thread, I think I also made the mistake of getting Star's 
name inverted.
I'm sorry, especially as in this case it is not as unclear as some Chinese 
names can be for foreigners.  I can only put this one down to approaching 
senility.
 Sorry, Star - I'll try not to do it again.

Evan

> -Original Message-
> From: edk2-devel  On Behalf Of Laszlo
> Ersek
> Sent: 18 June 2018 16:52
> To: Sami Mujawar ; edk2-devel@lists.01.org
> Cc: ruiyu...@intel.com; Stephanie Hughes-Fitt  f...@arm.com>; eric.d...@intel.com; ard.biesheu...@linaro.org;
> leif.lindh...@linaro.org; nd ; star.z...@intel.com
> Subject: Re: [edk2] [PATCH v2] MdeModulePkg: Enable SATA Controller PCI
> mem space
> 
> off-topic:
> 
> On 06/15/18 16:13, Sami Mujawar wrote:
> > - Enable IO space, suggestion to use EFI_PCI_DEVICE_ENABLE[ZENG]
> 
> My understanding is that "Star" is Star's given name, and "Zeng" is his
> surname. Let's not start calling each other by surname, shall we?
> 
> (Email addresses under @intel.com seem to follow the "given-
> name.surname" or "given-name.middle-initial.surname" pattern.)
> 
> Thanks,
> Laszlo
> ___
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


Re: [edk2] [PATCH v2] MdeModulePkg: Enable SATA Controller PCI mem space

2018-06-18 Thread Laszlo Ersek
off-topic:

On 06/15/18 16:13, Sami Mujawar wrote:
> - Enable IO space, suggestion to use EFI_PCI_DEVICE_ENABLE[ZENG]

My understanding is that "Star" is Star's given name, and "Zeng" is his
surname. Let's not start calling each other by surname, shall we?

(Email addresses under @intel.com seem to follow the
"given-name.surname" or "given-name.middle-initial.surname" pattern.)

Thanks,
Laszlo
___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


Re: [edk2] [PATCH v2] MdeModulePkg: Enable SATA Controller PCI mem space

2018-06-15 Thread Leif Lindholm
On Fri, Jun 15, 2018 at 03:26:54PM +, Evan Lloyd wrote:
> Hi Ard, Zeng
> 
> > -Original Message-
> > From: Ard Biesheuvel 
> > Sent: 15 June 2018 15:17
> > To: Sami Mujawar 
> > Cc: edk2-devel@lists.01.org; Zeng, Star ; Eric Dong
> > ; Ruiyu Ni ; Leif Lindholm
> > ; Matteo Carlini ;
> > Stephanie Hughes-Fitt ; Evan Lloyd
> > ; Thomas Abraham ;
> > nd 
> > Subject: Re: [PATCH v2] MdeModulePkg: Enable SATA Controller PCI mem
> > space
> > 
> > On 15 June 2018 at 16:13, Sami Mujawar  wrote:
> > > The SATA controller driver crashes while accessing the PCI memory
> > > [AHCI Base Registers (ABAR)], as the PCI memory space is not enabled.
> > >
> > > Enable the PCI memory space access to prevent the SATA Controller
> > > driver from crashing.
> > >
> > > Contributed-under: TianoCore Contribution Agreement 1.1
> > > Signed-off-by: Sami Mujawar 
> > > ---
> > > The changes can be viewed at
> > >
> > https://github.com/samimujawar/edk2/tree/284_sata_controler_pci_mem_f
> > i
> > > x_v2
> > >
> > > Notes:
> > > v2:
> > > - Improved log message and code documentation based on feedback
> > [SAMI]
> > > - Enable IO space, suggestion to use EFI_PCI_DEVICE_ENABLE
> > > [ZENG]
> > > - This SATA Controller driver only uses the PCI BAR5 register
> > >   space which is the AHCI Base Address (ABAR). According to the
> > >   'Serial ATA Advanced Host Controller Interface (AHCI) 1.3.1'
> > >   specification, section 2.1.11, 'This register allocates space
> > >   for the HBA memory registers'.
> > >   The section 2.1.10, allows provision for Optional BARs which
> > >   may support either memory or I/O spaces. However, in the context
> > >   of the current SATA controller driver, which only ever access
> > >   the ABAR, enabling I/O memory space is not required.
> > > [SAMI]
> > > - Prefer to use // surrounding comments   
> > > [ZENG]
> > > - Doing this would violate the edk2 coding standard. See EDK2
> > >   Coding Standard Specification, revision 2.20, section 6.2.3.
> > > [SAMI]
> > >
> > 
> > Please stop obsessing about the coding standard. The maintainer was quite
> > clear what he wanted, and in the past, I have also indicated that for the 
> > ARM
> > related packages, I prefer readability and consistency over adherence to a
> > dubious standard.
> 
> [[Evan Lloyd]] I'd like to make some points here:
> 1.It is perfectly reasonable for Sami to explain why he has done
>   something a certain way - Zeng is then at liberty to respond
>   with his preference, but we do not (yet) know what that might
>   be.

Yes we do. Zeng responded with that in the first instance. Sami then
disputed that explicitly stated preference, referring to the coding
standard. There was no lack of clarity in what Zeng wanted - so I
remain unclear on what this is intending to achieve?

> 2."readability and consistency" is the very purpose of any
>   coding standard.  If consistency is valuable, doesn't that
>   apply across modules?  I understand that it may be
>   particularly valuable for maintainers within their modules,
>   but the rest of us benefit from a consistent style -
>   especially when looking outside our normal demesne.

At which point the rule of thumb is: aligning with the immediately
surrounding code always trumps adhering to the specified style.
Which is in itself trumped by the maintainer explicitly stating
another preference. (Like here.)

> 3.Applying a consistent Coding Standard across the whole project
>   is a necessary pre-condition for automated CI checks on new
>   submissions.  I'd like to aim e.g. for an improved
>   patchcheck.py, but that requires consistency across modules,
>   at least for new code.

Such a system will _never_ be fully automatable.

I will _always_ take a 80 < x < 90 line over one that breaks up an
output string or one that reduces readability more than having to
side-scroll does.

That doesn't make it worthless, far from it.

> Note: I am not disputing the dubiosity of the  CCS.  It could be
> improved (a lot).  However it is all we have right now.

Then a more constructive approach is to recognise that not a single
one of the maintainers are appearing to be respecting the horror vacui
rule and submit a patch against
https://github.com/tianocore-docs/edk2-CCodingStandardsSpecification
to have section 6.2.3 deleted.

(Much like I should at some point get around to have 5.4.2.2.2
deleted, or at least conditionalised to only apply for !ARM.)

Regards,

Leif


> Regards,
> Evan
> 
> > 
> > 
> > > v1:
> > > - Fix SATA Controller driver crash
> > > [SAMI]
> ...
> > > --
> > > 'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)'
> > >
> > >
___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


Re: [edk2] [PATCH v2] MdeModulePkg: Enable SATA Controller PCI mem space

2018-06-15 Thread Ard Biesheuvel
On 15 June 2018 at 17:26, Evan Lloyd  wrote:
> Hi Ard, Zeng
>
>> -Original Message-
>> From: Ard Biesheuvel 
>> Sent: 15 June 2018 15:17
>> To: Sami Mujawar 
>> Cc: edk2-devel@lists.01.org; Zeng, Star ; Eric Dong
>> ; Ruiyu Ni ; Leif Lindholm
>> ; Matteo Carlini ;
>> Stephanie Hughes-Fitt ; Evan Lloyd
>> ; Thomas Abraham ;
>> nd 
>> Subject: Re: [PATCH v2] MdeModulePkg: Enable SATA Controller PCI mem
>> space
>>
>> On 15 June 2018 at 16:13, Sami Mujawar  wrote:
>> > The SATA controller driver crashes while accessing the PCI memory
>> > [AHCI Base Registers (ABAR)], as the PCI memory space is not enabled.
>> >
>> > Enable the PCI memory space access to prevent the SATA Controller
>> > driver from crashing.
>> >
>> > Contributed-under: TianoCore Contribution Agreement 1.1
>> > Signed-off-by: Sami Mujawar 
>> > ---
>> > The changes can be viewed at
>> >
>> https://github.com/samimujawar/edk2/tree/284_sata_controler_pci_mem_f
>> i
>> > x_v2
>> >
>> > Notes:
>> > v2:
>> > - Improved log message and code documentation based on feedback
>> [SAMI]
>> > - Enable IO space, suggestion to use EFI_PCI_DEVICE_ENABLE
>> > [ZENG]
>> > - This SATA Controller driver only uses the PCI BAR5 register
>> >   space which is the AHCI Base Address (ABAR). According to the
>> >   'Serial ATA Advanced Host Controller Interface (AHCI) 1.3.1'
>> >   specification, section 2.1.11, 'This register allocates space
>> >   for the HBA memory registers'.
>> >   The section 2.1.10, allows provision for Optional BARs which
>> >   may support either memory or I/O spaces. However, in the context
>> >   of the current SATA controller driver, which only ever access
>> >   the ABAR, enabling I/O memory space is not required.
>> > [SAMI]
>> > - Prefer to use // surrounding comments   
>> > [ZENG]
>> > - Doing this would violate the edk2 coding standard. See EDK2
>> >   Coding Standard Specification, revision 2.20, section 6.2.3.
>> > [SAMI]
>> >
>>
>> Please stop obsessing about the coding standard. The maintainer was quite
>> clear what he wanted, and in the past, I have also indicated that for the ARM
>> related packages, I prefer readability and consistency over adherence to a
>> dubious standard.
>
> [[Evan Lloyd]] I'd like to make some points here:
> 1.  It is perfectly reasonable for Sami to explain why he has done 
> something a certain way - Zeng is then at liberty to respond with his 
> preference, but we do not (yet) know what that might be.
>

Yes, we do. He already told us his preference.

> 2.  "readability and consistency" is the very purpose of any coding 
> standard.  If consistency is valuable, doesn't that apply across modules?  I 
> understand that it may be particularly valuable for maintainers within their 
> modules, but the rest of us benefit from a consistent style - especially when 
> looking outside our normal demesne.
>
> 3.  Applying a consistent Coding Standard across the whole project is a 
> necessary pre-condition for automated CI checks on new submissions.  I'd like 
> to aim e.g. for an improved patchcheck.py, but that requires consistency 
> across modules, at least for new code.
>
> Note: I am not disputing the dubiosity of the  CCS.  It could be improved (a 
> lot).  However it is all we have right now.
>

OK, so you are arguing that we should adhere to the letter of the CCS
even though there is consensus about its shortcomings and its
detachment from reality? I think that is a waste of everybody's time.
___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


Re: [edk2] [PATCH v2] MdeModulePkg: Enable SATA Controller PCI mem space

2018-06-15 Thread Evan Lloyd
Hi Ard, Zeng

> -Original Message-
> From: Ard Biesheuvel 
> Sent: 15 June 2018 15:17
> To: Sami Mujawar 
> Cc: edk2-devel@lists.01.org; Zeng, Star ; Eric Dong
> ; Ruiyu Ni ; Leif Lindholm
> ; Matteo Carlini ;
> Stephanie Hughes-Fitt ; Evan Lloyd
> ; Thomas Abraham ;
> nd 
> Subject: Re: [PATCH v2] MdeModulePkg: Enable SATA Controller PCI mem
> space
> 
> On 15 June 2018 at 16:13, Sami Mujawar  wrote:
> > The SATA controller driver crashes while accessing the PCI memory
> > [AHCI Base Registers (ABAR)], as the PCI memory space is not enabled.
> >
> > Enable the PCI memory space access to prevent the SATA Controller
> > driver from crashing.
> >
> > Contributed-under: TianoCore Contribution Agreement 1.1
> > Signed-off-by: Sami Mujawar 
> > ---
> > The changes can be viewed at
> >
> https://github.com/samimujawar/edk2/tree/284_sata_controler_pci_mem_f
> i
> > x_v2
> >
> > Notes:
> > v2:
> > - Improved log message and code documentation based on feedback
> [SAMI]
> > - Enable IO space, suggestion to use EFI_PCI_DEVICE_ENABLE[ZENG]
> > - This SATA Controller driver only uses the PCI BAR5 register
> >   space which is the AHCI Base Address (ABAR). According to the
> >   'Serial ATA Advanced Host Controller Interface (AHCI) 1.3.1'
> >   specification, section 2.1.11, 'This register allocates space
> >   for the HBA memory registers'.
> >   The section 2.1.10, allows provision for Optional BARs which
> >   may support either memory or I/O spaces. However, in the context
> >   of the current SATA controller driver, which only ever access
> >   the ABAR, enabling I/O memory space is not required.[SAMI]
> > - Prefer to use // surrounding comments   [ZENG]
> > - Doing this would violate the edk2 coding standard. See EDK2
> >   Coding Standard Specification, revision 2.20, section 6.2.3.[SAMI]
> >
> 
> Please stop obsessing about the coding standard. The maintainer was quite
> clear what he wanted, and in the past, I have also indicated that for the ARM
> related packages, I prefer readability and consistency over adherence to a
> dubious standard.

[[Evan Lloyd]] I'd like to make some points here:
1.  It is perfectly reasonable for Sami to explain why he has done 
something a certain way - Zeng is then at liberty to respond with his 
preference, but we do not (yet) know what that might be.  

2.  "readability and consistency" is the very purpose of any coding 
standard.  If consistency is valuable, doesn't that apply across modules?  I 
understand that it may be particularly valuable for maintainers within their 
modules, but the rest of us benefit from a consistent style - especially when 
looking outside our normal demesne.

3.  Applying a consistent Coding Standard across the whole project is a 
necessary pre-condition for automated CI checks on new submissions.  I'd like 
to aim e.g. for an improved patchcheck.py, but that requires consistency across 
modules, at least for new code.

Note: I am not disputing the dubiosity of the  CCS.  It could be improved (a 
lot).  However it is all we have right now.

Regards,
Evan

> 
> 
> > v1:
> > - Fix SATA Controller driver crash[SAMI]
...
> > --
> > 'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)'
> >
> >
___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


Re: [edk2] [PATCH v2] MdeModulePkg: Enable SATA Controller PCI mem space

2018-06-15 Thread Ard Biesheuvel
On 15 June 2018 at 16:13, Sami Mujawar  wrote:
> The SATA controller driver crashes while accessing the
> PCI memory [AHCI Base Registers (ABAR)], as the PCI memory
> space is not enabled.
>
> Enable the PCI memory space access to prevent the SATA
> Controller driver from crashing.
>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Sami Mujawar 
> ---
> The changes can be viewed at 
> https://github.com/samimujawar/edk2/tree/284_sata_controler_pci_mem_fix_v2
>
> Notes:
> v2:
> - Improved log message and code documentation based on feedback   [SAMI]
> - Enable IO space, suggestion to use EFI_PCI_DEVICE_ENABLE[ZENG]
> - This SATA Controller driver only uses the PCI BAR5 register
>   space which is the AHCI Base Address (ABAR). According to the
>   'Serial ATA Advanced Host Controller Interface (AHCI) 1.3.1'
>   specification, section 2.1.11, 'This register allocates space
>   for the HBA memory registers'.
>   The section 2.1.10, allows provision for Optional BARs which
>   may support either memory or I/O spaces. However, in the context
>   of the current SATA controller driver, which only ever access
>   the ABAR, enabling I/O memory space is not required.[SAMI]
> - Prefer to use // surrounding comments   [ZENG]
> - Doing this would violate the edk2 coding standard. See EDK2
>   Coding Standard Specification, revision 2.20, section 6.2.3.[SAMI]
>

Please stop obsessing about the coding standard. The maintainer was
quite clear what he wanted, and in the past, I have also indicated
that for the ARM related packages, I prefer readability and
consistency over adherence to a dubious standard.


> v1:
> - Fix SATA Controller driver crash[SAMI]
>
>  MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.c | 80 
> +++-
>  MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.h |  7 ++
>  2 files changed, 86 insertions(+), 1 deletion(-)
>
> diff --git a/MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.c 
> b/MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.c
> index 
> a6d55c15571728eb3fd572003f383ba7c86635ae..faf1b62e81000449e43e5298bb8ff885e48e4318
>  100644
> --- a/MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.c
> +++ b/MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.c
> @@ -2,6 +2,7 @@
>This driver module produces IDE_CONTROLLER_INIT protocol for Sata 
> Controllers.
>
>Copyright (c) 2011 - 2016, Intel Corporation. All rights reserved.
> +  Copyright (c) 2018, ARM 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
> @@ -364,6 +365,7 @@ SataControllerStart (
>EFI_SATA_CONTROLLER_PRIVATE_DATA  *Private;
>UINT32Data32;
>UINTN TotalCount;
> +  UINT64PciAttributes;
>
>DEBUG ((EFI_D_INFO, "SataControllerStart start\n"));
>
> @@ -406,6 +408,61 @@ SataControllerStart (
>Private->IdeInit.CalculateMode  = IdeInitCalculateMode;
>Private->IdeInit.SetTiming  = IdeInitSetTiming;
>Private->IdeInit.EnumAll= SATA_ENUMER_ALL;
> +  Private->PciAttributesChanged   = FALSE;
> +
> +  // Save original PCI attributes
> +  Status = PciIo->Attributes (
> +PciIo,
> +EfiPciIoAttributeOperationGet,
> +0,
> +>OriginalPciAttributes
> +);
> +  if (EFI_ERROR (Status)) {
> +  goto Done;
> +  }
> +
> +  DEBUG ((
> +EFI_D_INFO,
> +"Original PCI Attributes = 0x%llx\n",
> +Private->OriginalPciAttributes
> +));
> +
> +  if ((Private->OriginalPciAttributes & EFI_PCI_IO_ATTRIBUTE_MEMORY) == 0) {
> +Status = PciIo->Attributes (
> +  PciIo,
> +  EfiPciIoAttributeOperationSupported,
> +  0,
> +  
> +  );
> +if (EFI_ERROR (Status)) {
> +  goto Done;
> +}
> +
> +DEBUG ((EFI_D_INFO, "Supported PCI Attributes = 0x%llx\n", 
> PciAttributes));
> +
> +if ((PciAttributes & EFI_PCI_IO_ATTRIBUTE_MEMORY) == 0) {
> +  DEBUG ((
> +EFI_D_ERROR,
> +"Error: EFI_PCI_IO_ATTRIBUTE_MEMORY not supported\n"
> +));
> +  Status = EFI_UNSUPPORTED;
> +  goto Done;
> +}
> +
> +PciAttributes = Private->OriginalPciAttributes | 
> EFI_PCI_IO_ATTRIBUTE_MEMORY;
> +
> +DEBUG ((EFI_D_INFO, "Enable PCI Attributes = 0x%llx\n", PciAttributes));
> +Status = PciIo->Attributes (
> +  PciIo,
> +  EfiPciIoAttributeOperationEnable,
> +  PciAttributes,
> +  NULL
> +