public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Laszlo Ersek <lersek@redhat.com>
To: "Yao, Jiewen" <jiewen.yao@intel.com>,
	"Ni, Ruiyu" <ruiyu.ni@intel.com>,
	Paolo Bonzini <pbonzini@redhat.com>
Cc: "Dong, Eric" <eric.dong@intel.com>,
	Ard Biesheuvel <ard.biesheuvel@linaro.org>,
	edk2-devel-01 <edk2-devel@lists.01.org>,
	Dann Frazier <dannf@ubuntu.com>,
	"Zeng, Star" <star.zeng@intel.com>
Subject: Re: [PATCH] MdeModulePkg/AtaAtapiPassThru: disable only BM-DMA at ExitBootServices()
Date: Mon, 27 Nov 2017 13:29:30 +0100	[thread overview]
Message-ID: <0236afa2-e365-af7a-9374-7fd1ad742c36@redhat.com> (raw)
In-Reply-To: <74D8A39837DF1E4DA445A8C0B3885C503AA2B77C@shsmsx102.ccr.corp.intel.com>

Hi Jiewen,

On 11/24/17 02:40, Yao, Jiewen wrote:
> Maybe, can we revisit the original requirement on why we need disable BME at ExitBootService for OVMF?
> 
> I recall we have lots of discussion at September. It is good to refresh.
> 
> ==============================
> [edk2] [PATCH 0/4] MdeModulePkg: some PCI HC drivers: unmap common buffers at ExitBootServices()
> https://lists.01.org/pipermail/edk2-devel/2017-September/014099.html
> 
> At ExitBootServices(), PCI and VirtIo drivers should only care about
> aborting pending DMA on the devices. Cleaning up PciIo mappings (which
> ultimately boil down to IOMMU mappings) for those aborted DMA operations
> should be the job of the IOMMU driver.
> ==============================
> 
> I think the Driver Writer's Guide recommend to stop the transaction.
> But it does not say you must turn off BME.
> Clear BME is just one way to meet the recommendation.
> Maybe we can figure out other way to halt the controller, or stop DMA transaction?
> Such as stop timer event, set device reset/halt register, etc.
> I think USB has already done that.
> 
> 
> On the other hand, I do not think "OVMF does not support S4" is a good justification to add PCD.
> Yes, it does not support at this moment. But who knows the status after 3 or 5 years?
> I also heard some VMM do support S4 resume Guest.
> 
> 
> I also recommend to rollback all BME operation at EBS as first step, then go back to see what is best way to

I agree that, if the device and the driver offer another way to abort
pending DMA, we can use that too.

In fact, my very first patch for AtaAtapiPassThru on this topic used
AhciReset():

[1] http://mid.mail-archive.com/20170903195449.30261-5-lersek@redhat.com

But then you recommended clearing BusMasterEnable:

[2]
http://mid.mail-archive.com/74D8A39837DF1E4DA445A8C0B3885C503A9A79BD@shsmsx102.ccr.corp.intel.com


(The old patch [1] I referenced above also called PciIo->Unmap(). We've
since agreed that *that* part of the idea was wrong, so I'm not
suggesting to return to PciIo->Unmap().)

So, perhaps AhciReset() would be good enough after all, for aborting
pending DMA.

Thanks,
Laszlo




>> -----Original Message-----
>> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Ni,
>> Ruiyu
>> Sent: Friday, November 24, 2017 9:04 AM
>> To: Paolo Bonzini <pbonzini@redhat.com>
>> Cc: Dong, Eric <eric.dong@intel.com>; Ard Biesheuvel
>> <ard.biesheuvel@linaro.org>; edk2-devel-01 <edk2-devel@lists.01.org>; Dann
>> Frazier <dannf@ubuntu.com>; Laszlo Ersek <lersek@redhat.com>; Zeng, Star
>> <star.zeng@intel.com>
>> Subject: Re: [edk2] [PATCH] MdeModulePkg/AtaAtapiPassThru: disable only
>> BM-DMA at ExitBootServices()
>>
>> Maybe win10 does some optimization in S4 path.
>>
>> Sent from a small-screen device
>>
>> 在 2017年11月24日,上午8:01,Paolo Bonzini
>> <pbonzini@redhat.com<mailto:pbonzini@redhat.com>> 写道:
>>
>> On 23/11/2017 14:08, Laszlo Ersek wrote:
>> On 11/23/17 03:20, Ni, Ruiyu wrote:
>> I cannot explain precisely why the S4 resume fails.
>> I can just guess: Windows might have some assumptions on the BM bit.
>> Can we make this configurable on the platform level somehow?
>>
>> On one hand, I certainly don't want to break Windows 10, even in case
>> this issue ultimately turns out to be a Windows 10 bug.
>>
>> On the other hand, OVMF does not support S4, and disabling BMDMA at
>> ExitBootServices() in PCI drivers is specifically what the Driver
>> Writers' Guide recommends. Otherwise pending DMA could corrupt OS memory.
>>
>> S4 can be done by the OS even if firmware says it doesn't support it.
>>
>> Once hibernation is done, it is merely a "courtesy" for the OSPM to turn
>> off the computer using the _S4 ACPI object rather than _S5.
>>
>> Paolo
>> _______________________________________________
>> edk2-devel mailing list
>> edk2-devel@lists.01.org
>> https://lists.01.org/mailman/listinfo/edk2-devel



  reply	other threads:[~2017-11-27 12:25 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-26 15:48 [PATCH] MdeModulePkg/AtaAtapiPassThru: disable only BM-DMA at ExitBootServices() Laszlo Ersek
2017-10-26 19:56 ` dann frazier
2017-10-27  3:23 ` Zeng, Star
2017-10-27 12:25   ` Laszlo Ersek
2017-10-27 14:57 ` Aleksei
2017-10-27 16:09 ` Laszlo Ersek
2017-11-22 10:05   ` Ni, Ruiyu
2017-11-22 10:26     ` Zeng, Star
2017-11-23  2:20       ` Ni, Ruiyu
2017-11-23 13:08         ` Laszlo Ersek
2017-11-23 14:58           ` Ni, Ruiyu
2017-11-23 17:19             ` Laszlo Ersek
2017-11-23 23:06               ` Ni, Ruiyu
2017-11-24  0:01           ` Paolo Bonzini
2017-11-24  1:04             ` Ni, Ruiyu
2017-11-24  1:40               ` Yao, Jiewen
2017-11-27 12:29                 ` Laszlo Ersek [this message]
2017-11-27 12:58                   ` Zeng, Star
2017-11-27 13:41                   ` Yao, Jiewen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0236afa2-e365-af7a-9374-7fd1ad742c36@redhat.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox