From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
To: Ryszard Knop <ryszard.knop@linux.intel.com>
Cc: "edk2-devel@lists.01.org" <edk2-devel@lists.01.org>,
"Kacperski, Kamil" <kamil.kacperski@intel.com>,
"Jin, Eric" <eric.jin@intel.com>,
"Orlowski, Pawel" <pawel.orlowski@intel.com>,
"Kinney, Michael D" <michael.d.kinney@intel.com>,
"Hsiung, Harry L" <harry.l.hsiung@intel.com>
Subject: Re: [PATCH edk2-staging 00/19] IntelUndiPkg/GigUndiDxe: build fixes for AARCH64/ARM/GCC
Date: Thu, 28 Mar 2019 12:38:50 +0100 [thread overview]
Message-ID: <CAKv+Gu9A4+QqGW3ShY7qFf5HwgWgDcVxPbDs1=PB1r0Wt24S+w@mail.gmail.com> (raw)
In-Reply-To: <48d303c0db5d5007203a1557d7e5728d19550201.camel@linux.intel.com>
On Thu, 28 Mar 2019 at 11:46, Ryszard Knop <ryszard.knop@linux.intel.com> wrote:
>
> On Wed, 2019-03-27 at 16:32 +0100, Ard Biesheuvel wrote:
> > On Tue, 29 Jan 2019 at 14:55, Ryszard Knop <
> > ryszard.knop@linux.intel.com> wrote:
> > > +Team
> > >
> >
> > As it turns out, this driver is still broken for non-1:1 mapped DMA.
> >
> > In particular, I am hitting a crash on
> >
> > E1000MemCopy (
> > (UINT8 *) (UINTN) CpbReceive->BufferAddr,
> > (UINT8 *) (UINTN) ReceiveDescriptor->buffer_addr,
> > TempLen
> > );
> >
> > (around line 676 in e1000.c), which uses the DMA address
> > 'ReceiveDescriptor->buffer_addr' in a memory copy operation performed
> > by the CPU. This causes a crash on systems where the DMA address is
> > not also a valid CPU address.
>
> Huh, this is new... I don't have access to any system behaving this
> way, so I can't test this, but E1000.c -> E1000TxRxConfigure links
> RxDesc->buffer_addr to the physical addresses, that descriptor is used
> by the hardware to DMA data where needed, and we try to copy from that
> same physical address later, while we should copy from unmapped
> addresses instead.
>
Indeed.
> This probably should be solved by having a separate array/something
> with CurRxInd -> unmapped addresses, but I'll have to talk with my team
> to solve this in a sensible way.
>
> In the meantime, maybe you know if there's a way to simulate this
> situation under QEMU or something?
>
I am using an arm64 board with modified firmware to emulate different
PCIe host bridge configurations. I don't know whether QEMU has support
for non-1:1 mapped DMA on x86, but it does emulate various boards
(such as the raspberry pi 2 iirc) where the CPU and device addressing
is not 1:1.
next prev parent reply other threads:[~2019-03-28 11:39 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-06 17:58 [PATCH edk2-staging 00/19] IntelUndiPkg/GigUndiDxe: build fixes for AARCH64/ARM/GCC Ard Biesheuvel
2018-11-06 17:58 ` [PATCH edk2-staging 01/19] IntelOpenSourceUndiPkg.dsc: add AARCH64 and ARM to supported architectures Ard Biesheuvel
2019-01-29 13:54 ` Ryszard Knop
2019-01-29 14:04 ` Ard Biesheuvel
2018-11-06 17:58 ` [PATCH edk2-staging 02/19] IntelUndiPkg: remove EOF markers Ard Biesheuvel
2018-11-06 19:34 ` Philippe Mathieu-Daudé
2019-01-29 13:58 ` Ryszard Knop
2018-11-06 17:58 ` [PATCH edk2-staging 03/19] IntelUndiPkg/GigUndiDxe: consistently use lowercase for e1000 in filenames Ard Biesheuvel
2018-11-06 19:35 ` Philippe Mathieu-Daudé
2019-01-29 14:21 ` Ryszard Knop
2018-11-06 17:58 ` [PATCH edk2-staging 04/19] IntelUndiPkg/GigUndiDxe: consistently use forward slashes as path separators Ard Biesheuvel
2018-11-06 19:37 ` Philippe Mathieu-Daudé
2019-01-29 14:26 ` Ryszard Knop
2018-11-06 17:58 ` [PATCH edk2-staging 05/19] IntelUndiPkg/GigUndiDxe: move BRAND_STRUCT declaration after type definition Ard Biesheuvel
2019-01-29 16:02 ` Ryszard Knop
2018-11-06 17:58 ` [PATCH edk2-staging 06/19] IntelUndiPkg/GigUndiDxe: use intermediate UINTN casts for pointers Ard Biesheuvel
2019-01-30 10:59 ` Ryszard Knop
2018-11-06 17:58 ` [PATCH edk2-staging 07/19] IntelUndiPkg/GigUndiDxe: create GCC alternatives for MSFT build options Ard Biesheuvel
2019-01-30 11:48 ` Ryszard Knop
2018-11-06 17:58 ` [PATCH edk2-staging 08/19] IntelUndiPkg/GigUndiDxe: add missing VOID** cast Ard Biesheuvel
2018-11-07 9:16 ` Philippe Mathieu-Daudé
2018-11-07 14:05 ` Philippe Mathieu-Daudé
2019-01-30 12:05 ` Ryszard Knop
2018-11-06 17:58 ` [PATCH edk2-staging 09/19] IntelUndiPkg/GigUndiDxe: add missing UINT8* cast Ard Biesheuvel
2018-11-06 20:31 ` Philippe Mathieu-Daudé
2018-11-06 20:35 ` Ard Biesheuvel
2018-11-07 9:08 ` Philippe Mathieu-Daudé
2019-01-30 12:37 ` Ryszard Knop
2019-01-30 12:30 ` Ryszard Knop
2018-11-06 17:58 ` [PATCH edk2-staging 10/19] IntelUndiPkg/GigUndiDxe: add missing braces to GUID literals Ard Biesheuvel
2018-11-06 20:34 ` Philippe Mathieu-Daudé
2019-01-30 12:59 ` Ryszard Knop
2018-11-06 17:58 ` [PATCH edk2-staging 11/19] IntelUndiPkg/GigUndiDxe: fix incorrect use of CPP token pasting Ard Biesheuvel
2019-01-30 13:35 ` Ryszard Knop
2018-11-06 17:58 ` [PATCH edk2-staging 12/19] IntelUndiPkg/GigUndiDxe: cast E1000MemCopy () args to correct pointer type Ard Biesheuvel
2018-11-06 20:35 ` Philippe Mathieu-Daudé
2019-01-30 13:37 ` Ryszard Knop
2018-11-06 17:58 ` [PATCH edk2-staging 13/19] IntelUndiPkg/GigUndiDxe: don't take address of cast expression Ard Biesheuvel
2018-11-06 20:36 ` Philippe Mathieu-Daudé
2019-01-30 13:41 ` Ryszard Knop
2018-11-06 17:58 ` [PATCH edk2-staging 14/19] IntelUndiPkg/GigUndiDxe: redefine UNREFERENCED_nPARAMETER macros for GCC Ard Biesheuvel
2018-11-06 17:58 ` [PATCH edk2-staging 15/19] IntelUndiPkg/GigUndiDxe: remove forward declaration of non-existent function Ard Biesheuvel
2018-11-06 20:40 ` Philippe Mathieu-Daudé
2019-01-30 15:26 ` Ryszard Knop
2018-11-06 17:58 ` [PATCH edk2-staging 16/19] IntelUndiPkg/GigUndiDxe: fix incorrect indentation Ard Biesheuvel
2018-11-06 20:41 ` Philippe Mathieu-Daudé
2018-11-06 17:58 ` [PATCH edk2-staging 17/19] IntelUndiPkg/GigUndiDxe: move MSFT warning overrides to INF file Ard Biesheuvel
2019-01-30 14:09 ` Ryszard Knop
2018-11-06 17:58 ` [PATCH edk2-staging 18/19] IntelUndiPkg/GigUndiDxe: add missing EFIAPI modifiers Ard Biesheuvel
2019-01-30 15:15 ` Ryszard Knop
2019-01-30 15:20 ` Ard Biesheuvel
2019-01-30 15:31 ` Ryszard Knop
2019-01-30 15:33 ` Ard Biesheuvel
2018-11-06 17:58 ` [PATCH edk2-staging 19/19] IntelUndiPkg/GigUndiDxe: remove or reorganize unused variables Ard Biesheuvel
2018-11-07 9:08 ` Philippe Mathieu-Daudé
2019-01-30 14:32 ` Ryszard Knop
2018-11-06 22:10 ` [PATCH edk2-staging 00/19] IntelUndiPkg/GigUndiDxe: build fixes for AARCH64/ARM/GCC Kinney, Michael D
2018-11-06 23:03 ` Ard Biesheuvel
2018-11-09 17:54 ` Knop, Ryszard
2018-11-09 18:00 ` Ard Biesheuvel
2018-11-07 14:56 ` Leif Lindholm
2019-01-29 13:13 ` Ryszard Knop
2019-01-29 13:55 ` Ryszard Knop
2019-03-27 15:32 ` Ard Biesheuvel
2019-03-28 10:46 ` Ryszard Knop
2019-03-28 11:38 ` Ard Biesheuvel [this message]
2020-01-07 12:49 ` [edk2-devel] " Maciej Rabeda
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='CAKv+Gu9A4+QqGW3ShY7qFf5HwgWgDcVxPbDs1=PB1r0Wt24S+w@mail.gmail.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