All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Philippe Mathieu-Daudé" <f4bug@amsat.org>
To: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	qemu-devel@nongnu.org, hpoussin@reactos.org,
	aleksandar.rikalo@syrmia.com, aurelien@aurel32.net,
	jiaxun.yang@flygoat.com, jasowang@redhat.com,
	fthain@telegraphics.com.au, laurent@vivier.eu
Subject: Re: [PATCH v2 08/10] dp8393x: don't force 32-bit register access
Date: Thu, 1 Jul 2021 23:34:02 +0200	[thread overview]
Message-ID: <a6fae6a6-4fbd-a75c-96b5-403ba3658217@amsat.org> (raw)
In-Reply-To: <20210625065401.30170-9-mark.cave-ayland@ilande.co.uk>

On 6/25/21 8:53 AM, Mark Cave-Ayland wrote:
> Commit 3fe9a838ec "dp8393x: Always use 32-bit accesses" assumed that all accesses
> to the registers were 32-bit but this is actually not the case. The access size is
> determined by the CPU instruction used and not the number of physical address lines.
> 
> The big_endian workaround applied to the register read/writes was actually caused
> by forcing the access size to 32-bit when the guest OS was using a 16-bit access.
> Since the registers are 16-bit then we can simply set .impl.min_access to 2 and
> then the memory API will automatically do the right thing for both 16-bit accesses
> used by Linux and 32-bit accesses used by the MacOS toolbox ROM.

Hmm I'm not sure. This sounds to me like the "QEMU doesn't model
busses so we end using kludge to hide bugs" pattern. Can you
provide a QTest (ideally) or a "-trace memory_region_ops_\*" log
of your firmware accessing the dp8393x please?

> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> Fixes: 3fe9a838ec ("dp8393x: Always use 32-bit accesses")
> ---
>  hw/net/dp8393x.c | 7 +++----
>  1 file changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/hw/net/dp8393x.c b/hw/net/dp8393x.c
> index 252c0a2664..6789bcd3af 100644
> --- a/hw/net/dp8393x.c
> +++ b/hw/net/dp8393x.c
> @@ -602,15 +602,14 @@ static uint64_t dp8393x_read(void *opaque, hwaddr addr, unsigned int size)
>  
>      trace_dp8393x_read(reg, reg_names[reg], val, size);
>  
> -    return s->big_endian ? val << 16 : val;
> +    return val;
>  }
>  
> -static void dp8393x_write(void *opaque, hwaddr addr, uint64_t data,
> +static void dp8393x_write(void *opaque, hwaddr addr, uint64_t val,
>                            unsigned int size)
>  {
>      dp8393xState *s = opaque;
>      int reg = addr >> s->it_shift;
> -    uint32_t val = s->big_endian ? data >> 16 : data;
>  
>      trace_dp8393x_write(reg, reg_names[reg], val, size);
>  
> @@ -694,7 +693,7 @@ static void dp8393x_write(void *opaque, hwaddr addr, uint64_t data,
>  static const MemoryRegionOps dp8393x_ops = {
>      .read = dp8393x_read,
>      .write = dp8393x_write,
> -    .impl.min_access_size = 4,
> +    .impl.min_access_size = 2,
>      .impl.max_access_size = 4,
>      .endianness = DEVICE_NATIVE_ENDIAN,
>  };
> 


  reply	other threads:[~2021-07-01 21:35 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-25  6:53 [PATCH v2 00/10] dp8393x: fixes for MacOS toolbox ROM Mark Cave-Ayland
2021-06-25  6:53 ` [PATCH v2 01/10] dp8393x: checkpatch fixes Mark Cave-Ayland
2021-06-25  8:45   ` Philippe Mathieu-Daudé
2021-06-25  6:53 ` [PATCH v2 02/10] dp8393x: convert to trace-events Mark Cave-Ayland
2021-06-25  8:47   ` Philippe Mathieu-Daudé
2021-06-25  6:53 ` [PATCH v2 03/10] hw/mips/jazz: move PROM and checksum calculation from dp8393x device to board Mark Cave-Ayland
2021-07-01 21:43   ` Philippe Mathieu-Daudé
2021-06-25  6:53 ` [PATCH v2 04/10] hw/m68k/q800: " Mark Cave-Ayland
2021-07-01 21:43   ` Philippe Mathieu-Daudé
2021-06-25  6:53 ` [PATCH v2 05/10] dp8393x: remove onboard PROM containing MAC address and checksum Mark Cave-Ayland
2021-07-01 21:43   ` Philippe Mathieu-Daudé
2021-06-25  6:53 ` [PATCH v2 06/10] qemu/bitops.h: add bitrev8 implementation Mark Cave-Ayland
2021-07-01 21:46   ` Philippe Mathieu-Daudé
2021-06-25  6:53 ` [PATCH v2 07/10] hw/m68k/q800: fix PROM checksum and MAC address storage Mark Cave-Ayland
2021-06-25  6:53 ` [PATCH v2 08/10] dp8393x: don't force 32-bit register access Mark Cave-Ayland
2021-07-01 21:34   ` Philippe Mathieu-Daudé [this message]
2021-07-02  4:36     ` Finn Thain
2021-07-03  6:21       ` Mark Cave-Ayland
2021-07-03  8:52         ` Philippe Mathieu-Daudé
2021-07-03 12:04           ` Mark Cave-Ayland
2021-07-03 13:10             ` Philippe Mathieu-Daudé
2021-07-03 14:16               ` Mark Cave-Ayland
2021-07-03 14:22                 ` Philippe Mathieu-Daudé
2021-06-25  6:54 ` [PATCH v2 09/10] dp8393x: fix CAM descriptor entry index Mark Cave-Ayland
2021-07-03 12:59   ` Philippe Mathieu-Daudé
2021-07-05 19:13   ` Philippe Mathieu-Daudé
2021-06-25  6:54 ` [PATCH v2 10/10] hw/mips/jazz: specify correct endian for dp8393x device Mark Cave-Ayland
2021-06-25  8:51   ` Philippe Mathieu-Daudé
2021-06-25 12:01     ` Mark Cave-Ayland
2021-07-01 21:45   ` Philippe Mathieu-Daudé
2021-06-26  8:55 ` [PATCH v2 00/10] dp8393x: fixes for MacOS toolbox ROM Finn Thain
2021-07-02 13:03 ` Philippe Mathieu-Daudé
2021-07-03  6:32   ` Mark Cave-Ayland
2021-07-03  8:48     ` Philippe Mathieu-Daudé

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-all 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=a6fae6a6-4fbd-a75c-96b5-403ba3658217@amsat.org \
    --to=f4bug@amsat.org \
    --cc=aleksandar.rikalo@syrmia.com \
    --cc=aurelien@aurel32.net \
    --cc=fthain@telegraphics.com.au \
    --cc=hpoussin@reactos.org \
    --cc=jasowang@redhat.com \
    --cc=jiaxun.yang@flygoat.com \
    --cc=laurent@vivier.eu \
    --cc=mark.cave-ayland@ilande.co.uk \
    --cc=qemu-devel@nongnu.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.