Re: [PATCH 3/5] tty/8250_dw: Add support for OCTEON UARTS.

From: David Daney
Date: Wed Jun 19 2013 - 12:45:45 EST

On 06/19/2013 03:01 AM, Arnd Bergmann wrote:
On Tuesday 18 June 2013 12:12:53 David Daney wrote:
+static unsigned int dw8250_serial_inq(struct uart_port *p, int offset)
+ offset <<= p->regshift;
+ return (u8)__raw_readq(p->membase + offset);
+static void dw8250_serial_outq(struct uart_port *p, int offset, int value)
+ struct dw8250_data *d = p->private_data;
+ if (offset == UART_LCR)
+ d->last_lcr = value;
+ offset <<= p->regshift;
+ __raw_writeq(value, p->membase + offset);
+ dw8250_serial_inq(p, UART_LCR);

This breaks building on 32 bit architectures as I found on my daily ARM
builds: __raw_writeq cannot be defined on architectures that don't have
native 64 bit data access instructions.

I will rework the patch to avoid this problem.

It's also wrong to use the
__raw_* variant, which is not guaranteed to be atomic and is not

We do runtime probing and only use this function on platforms where it is appropriate, so atomicity is not an issue. As for endianess, I used the __raw_ variant precisely because it is correct for both big and little endian kernels.

David Daney

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at