diff mbox

[arm-devs,v1,03/13] net/cadence_gem: Don't assert against 0 buffer address

Message ID 758f5905e72f4572f4e334dcb879a3042487d971.1385967754.git.peter.crosthwaite@xilinx.com
State New
Headers show

Commit Message

Peter Crosthwaite Dec. 2, 2013, 7:10 a.m. UTC
This has no real hardware analog. Leave the error message in is as
it is almost certainly a guest error, but fallthrough to the expected
behaviour.

Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
---

 hw/net/cadence_gem.c | 1 -
 1 file changed, 1 deletion(-)

Comments

Peter Maydell Dec. 2, 2013, 12:04 p.m. UTC | #1
On 2 December 2013 07:10, Peter Crosthwaite
<peter.crosthwaite@xilinx.com> wrote:
> This has no real hardware analog. Leave the error message in is as
> it is almost certainly a guest error, but fallthrough to the expected
> behaviour.

Maybe we should qemu_log_mask(LOG_GUEST_ERROR, ...)  then?

> Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
> ---
>
>  hw/net/cadence_gem.c | 1 -
>  1 file changed, 1 deletion(-)
>
> diff --git a/hw/net/cadence_gem.c b/hw/net/cadence_gem.c
> index b84ee60..3f30caf 100644
> --- a/hw/net/cadence_gem.c
> +++ b/hw/net/cadence_gem.c
> @@ -694,7 +694,6 @@ static ssize_t gem_receive(NetClientState *nc, const uint8_t *buf, size_t size)
>          if (rx_desc_get_buffer(desc) == 0) {
>              DB_PRINT("Invalid RX buffer (NULL) for descriptor 0x%x\n",
>                       (unsigned)packet_desc_addr);
> -            break;
>          }
>
>          /* Copy packet data to emulated DMA buffer */
> --
> 1.8.4.4
>

-- PMM
Peter Crosthwaite Dec. 4, 2013, 12:16 a.m. UTC | #2
On Mon, Dec 2, 2013 at 10:04 PM, Peter Maydell <peter.maydell@linaro.org> wrote:
> On 2 December 2013 07:10, Peter Crosthwaite
> <peter.crosthwaite@xilinx.com> wrote:
>> This has no real hardware analog. Leave the error message in is as
>> it is almost certainly a guest error, but fallthrough to the expected
>> behaviour.
>
> Maybe we should qemu_log_mask(LOG_GUEST_ERROR, ...)  then?
>

I'm starting to think this is not a peripherals assumption to make.
Theres nothing in the GEM design that suggests a 0 RX buffer address
is functionally incorrect. Its not good for Zynq, as theres an ARM
vector table there but thats Zynq's problem not GEMs. Peripherals
DMAing to non-sensical addresses is a SoC/Board level problem and I
think it should be solved there. I'm just going to delete this whole
check.

Regards,
Peter
diff mbox

Patch

diff --git a/hw/net/cadence_gem.c b/hw/net/cadence_gem.c
index b84ee60..3f30caf 100644
--- a/hw/net/cadence_gem.c
+++ b/hw/net/cadence_gem.c
@@ -694,7 +694,6 @@  static ssize_t gem_receive(NetClientState *nc, const uint8_t *buf, size_t size)
         if (rx_desc_get_buffer(desc) == 0) {
             DB_PRINT("Invalid RX buffer (NULL) for descriptor 0x%x\n",
                      (unsigned)packet_desc_addr);
-            break;
         }
 
         /* Copy packet data to emulated DMA buffer */