public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
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.


  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