Laszlo:
  We manually search the unused functions in the module source files, and also 
verify the build to make sure the unused functions are real dead code. I agree 
to separate this patch as the module level. So, we can document which unused 
functions are removed in the driver. 

Thanks
Liming
> -----Original Message-----
> From: edk2-devel [mailto:[email protected]] On Behalf Of Laszlo 
> Ersek
> Sent: Monday, August 6, 2018 9:12 PM
> To: Zhang, Shenglei <[email protected]>; [email protected]
> Cc: Dong, Eric <[email protected]>; Zeng, Star <[email protected]>
> Subject: Re: [edk2] [PATCH] MdeModulePkg: Remove dead code in .c and .h files
> 
> On 08/06/18 09:49, shenglei wrote:
> > Some dead code has been removed in .c and .h files.
> > https://bugzilla.tianocore.org/show_bug.cgi?id=1062
> >
> > Cc: Star Zeng <[email protected]>
> > Cc: Eric Dong <[email protected]>
> > Contributed-under: TianoCore Contribution Agreement 1.1
> > Signed-off-by: shenglei <[email protected]>
> > ---
> >  .../Application/CapsuleApp/CapsuleDump.c      |  31 ---
> >  MdeModulePkg/Application/UiApp/FrontPage.c    |  40 ---
> >  MdeModulePkg/Application/UiApp/Ui.h           |  30 --
> >  .../Bus/Ata/AtaAtapiPassThru/AhciMode.c       | 104 -------
> >  .../Bus/Ata/AtaAtapiPassThru/IdeMode.c        | 257 ------------------
> >  .../Bus/Isa/Ps2KeyboardDxe/Ps2KbdCtrller.c    |  26 --
> >  .../Bus/Isa/Ps2KeyboardDxe/Ps2Keyboard.h      |  12 -
> >  MdeModulePkg/Bus/Pci/EhciDxe/EhciDebug.c      |  27 --
> >  MdeModulePkg/Bus/Pci/EhciDxe/EhciDebug.h      |  11 -
> >  MdeModulePkg/Bus/Pci/EhciDxe/EhciReg.c        |  44 ---
> >  .../Bus/Pci/NvmExpressDxe/NvmExpressHci.c     | 110 --------
> >  .../Bus/Pci/PciBusDxe/PciDeviceSupport.c      |  80 ------
> >  .../Bus/Pci/PciBusDxe/PciDeviceSupport.h      |  17 --
> >  MdeModulePkg/Bus/Pci/PciBusDxe/PciIo.c        |  41 ---
> >  MdeModulePkg/Bus/Pci/PciBusDxe/PciIo.h        |  21 --
> >  MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdDevice.c |  94 -------
> >  MdeModulePkg/Bus/Pci/UhciPei/DmaMem.c         |  22 --
> >  MdeModulePkg/Bus/Pci/UhciPei/UhcPeim.c        | 125 ---------
> >  MdeModulePkg/Bus/Pci/UhciPei/UhcPeim.h        |  78 ------
> >  MdeModulePkg/Bus/Pci/XhciDxe/XhciReg.c        |  66 -----
> >  MdeModulePkg/Bus/Pci/XhciDxe/XhciReg.h        |  28 --
> >  MdeModulePkg/Bus/Pci/XhciPei/UsbHcMem.c       |  24 --
> >  MdeModulePkg/Bus/Pci/XhciPei/XhcPeim.c        |  22 --
> >  MdeModulePkg/Bus/Pci/XhciPei/XhciReg.h        |  14 -
> >  .../Bus/Sd/EmmcBlockIoPei/EmmcHcMem.c         |  24 --
> >  MdeModulePkg/Bus/Sd/SdBlockIoPei/SdHcMem.c    |  24 --
> >  .../Bus/Ufs/UfsBlockIoPei/UfsBlockIoPei.c     | 101 -------
> >  MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsHcMem.c |  24 --
> >  MdeModulePkg/Bus/Ufs/UfsBlockIoPei/UfsHci.c   | 180 ------------
> >  .../Bus/Ufs/UfsPassThruDxe/UfsPassThruHci.c   |  49 ----
> >  MdeModulePkg/Bus/Usb/UsbBotPei/PeiUsbLib.c    | 190 -------------
> >  MdeModulePkg/Bus/Usb/UsbBotPei/PeiUsbLib.h    |  98 -------
> >  MdeModulePkg/Bus/Usb/UsbBusDxe/UsbHub.c       |  68 -----
> >  MdeModulePkg/Bus/Usb/UsbBusDxe/UsbUtility.c   | 146 ----------
> >  MdeModulePkg/Bus/Usb/UsbBusDxe/UsbUtility.h   | 114 --------
> >  MdeModulePkg/Bus/Usb/UsbBusPei/HubPeim.c      |  39 ---
> >  MdeModulePkg/Bus/Usb/UsbBusPei/HubPeim.h      |  18 --
> >  MdeModulePkg/Bus/Usb/UsbBusPei/PeiUsbLib.c    |  77 ------
> >  MdeModulePkg/Bus/Usb/UsbBusPei/PeiUsbLib.h    |  35 ---
> >  MdeModulePkg/Core/Dxe/DxeMain.h               |  13 -
> >  MdeModulePkg/Core/Dxe/DxeMain/DxeMain.c       |  23 --
> >  MdeModulePkg/Core/Dxe/Mem/HeapGuard.c         |  78 ------
> >  MdeModulePkg/Core/PiSmmCore/HeapGuard.c       | 166 -----------
> >  .../Core/PiSmmCore/MemoryAttributesTable.c    | 131 ---------
> >  MdeModulePkg/Core/PiSmmCore/Page.c            | 121 ---------
> >  .../Universal/Console/TerminalDxe/Terminal.h  |  12 -
> >  .../Console/TerminalDxe/TerminalConIn.c       |  25 --
> >  .../Universal/HiiDatabaseDxe/ConfigRouting.c  |  47 ----
> >  .../Universal/Network/IScsiDxe/IScsiProto.c   |  31 ---
> >  .../Universal/Network/Ip4Dxe/Ip4Config2Impl.c |  16 --
> >  .../Universal/Network/Tcp4Dxe/SockImpl.c      |  35 ---
> >  .../Universal/Network/Tcp4Dxe/SockInterface.c |  41 ---
> >  .../Universal/Network/Tcp4Dxe/Socket.h        |  32 ---
> >  .../Universal/Network/Tcp4Dxe/Tcp4Option.c    |  28 --
> >  .../Universal/Network/Tcp4Dxe/Tcp4Option.h    |  15 -
> >  .../Universal/SetupBrowserDxe/IfrParse.c      |  33 ---
> >  56 files changed, 3358 deletions(-)
> 
> Please split this patch up to a series so that *at the least* each
> module is covered by a separate patch. For example,
> 
>      1        MdeModulePkg/Application/CapsuleApp
>      2        MdeModulePkg/Application/UiApp
>      3        MdeModulePkg/Bus/Ata/AtaAtapiPassThru
>      4        MdeModulePkg/Bus/Isa/Ps2KeyboardDxe
>      5        MdeModulePkg/Bus/Pci/EhciDxe
>      6        MdeModulePkg/Bus/Pci/NvmExpressDxe
>      7        MdeModulePkg/Bus/Pci/PciBusDxe
>      8        MdeModulePkg/Bus/Pci/SdMmcPciHcDxe
>      9        MdeModulePkg/Bus/Pci/UhciPei
>     10        MdeModulePkg/Bus/Pci/XhciDxe
>     11        MdeModulePkg/Bus/Pci/XhciPei
>     12        MdeModulePkg/Bus/Sd/EmmcBlockIoPei
>     13        MdeModulePkg/Bus/Sd/SdBlockIoPei
>     14        MdeModulePkg/Bus/Ufs/UfsBlockIoPei
>     15        MdeModulePkg/Bus/Ufs/UfsPassThruDxe
>     16        MdeModulePkg/Bus/Usb/UsbBotPei
>     17        MdeModulePkg/Bus/Usb/UsbBusDxe
>     18        MdeModulePkg/Bus/Usb/UsbBusPei
>     19        MdeModulePkg/Core/Dxe
>     20        MdeModulePkg/Core/PiSmmCore
>     21        MdeModulePkg/Universal/Console/TerminalDxe
>     22        MdeModulePkg/Universal/HiiDatabaseDxe
>     23        MdeModulePkg/Universal/Network/IScsiDxe
>     24        MdeModulePkg/Universal/Network/Ip4Dxe
>     25        MdeModulePkg/Universal/Network/Tcp4Dxe
>     26        MdeModulePkg/Universal/SetupBrowserDxe
> 
> Removing 3358 lines, under a blanket "dead code" comment, across 26
> drivers, is terribly bad practice, in my opinion. It's unreviewable, and
> also unbisectable if something goes wrong.
> 
> The bug report <https://bugzilla.tianocore.org/show_bug.cgi?id=1062> states,
> 
>     Uefi-aware compiler found many modules have dead code and redundant
>     definitions in the MdeModulePkg. Please see the detail info in the
>     attachment log. We need to clean them.
> 
>     Because the module number is big, I report them all together by
>     package in this tracker and don't by modules separately.
> 
>     Please be aware that there might be false positives in the log. The
>     Uefi-aware compiler currently only analyze the C code and has not
>     supported the assemble code yet. So, if a function is only invoked
>     by assemble code, the Uefi-aware compiler might miss it and report
>     it as dead code. Please verify them carefully if the module have
>     assemble code.
> 
> The bug report itself states that there might be false positives in the
> log and that at least some cases have to be evaluated carefully. It's
> exactly that evaluation that should be captured in each commit message.
> The fact that the module number is big is *exactly* the reason why the
> patch series should be fine-grained.
> 
> Many of these modules are consumed by most platforms in existence. If a
> platform owner would like to take a look at a small subset of the
> modules being modified here, they now have to dig around in a 3+ KLOC
> patch, and figure it out for themselves *why* some code is called "dead".
> 
> Star, Eric, what are your takes on this? Do you agree with my request
> above, or do you prefer the patch in its current form?
> 
> Thanks
> Laszlo
> _______________________________________________
> edk2-devel mailing list
> [email protected]
> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to