Re: [PATCH v2 21/21] efi: Allow disabling PCI busmastering on bridges during boot

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Dec 18, 2019 at 9:03 AM Ard Biesheuvel <ardb@xxxxxxxxxx> wrote:
>
> From: Matthew Garrett <matthewgarrett@xxxxxxxxxx>
>
> Add an option to disable the busmaster bit in the control register on
> all PCI bridges during the invocation of ExitBootServices() and passing
> control to the runtime kernel. System firmware may configure the IOMMU
> to prevent malicious PCI devices from being able to attack the OS via DMA.
> However, since firmware can't guarantee that the OS is IOMMU-aware, it
> will tear down IOMMU configuration when ExitBootServices() is called.
> This leaves a window between where a hostile device could still cause
> damage before Linux configures the IOMMU again.
>
> If CONFIG_EFI_DISABLE_PCI_DMA is enabled or the "efi=disable_pci_dma"
> command line argument is passed, the EFI stub will clear the busmaster
> bit on all PCI bridges before ExitBootServices() completes. This will
> prevent any malicious PCI devices from being able to perform DMA until
> the kernel reenables busmastering after configuring the IOMMU.
>
> This option is disabled when in EFI mixed mode environments (ie, 64-bit
> kernels with a 32-bit EFI implementation), given that the use of EFI
> events is not supported in this case.
>
> This option may cause failures with some poorly behaved hardware and
> should not be enabled without testing. The kernel commandline options
> "efi=disable_pci_dma" or "efi=no_disable_pci_dma" may be used to
> override the default.

Could this maybe be efi=disable_early_pci_dma?

As it stands, it reads like busmastering is turned off and stays off,
which is not the case.  I'm dreading the silly forum posts saying
"your system is slow, and busmastering is leet, so use
efi=no_disable_pci_dma to allow busmastering and make it OMG fast".

--Andy



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux