|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v4 09/11] drivers/char: mark DMA buffers as reserved for the XHCI
On 13.08.2022 03:38, Marek Marczykowski-Górecki wrote:
> @@ -1050,13 +1051,20 @@ static struct uart_driver dbc_uart_driver = {
> };
>
> /* Those are accessed via DMA. */
> -static struct xhci_trb evt_trb[DBC_TRB_RING_CAP];
> -static struct xhci_trb out_trb[DBC_TRB_RING_CAP];
> -static struct xhci_trb in_trb[DBC_TRB_RING_CAP];
> -static struct xhci_erst_segment erst __aligned(16);
> -static struct xhci_dbc_ctx ctx __aligned(16);
> -static uint8_t out_wrk_buf[DBC_WORK_RING_CAP];
> -static struct xhci_string_descriptor str_buf[DBC_STRINGS_COUNT];
> +struct dbc_dma_bufs {
> + struct xhci_trb evt_trb[DBC_TRB_RING_CAP];
> + struct xhci_trb out_trb[DBC_TRB_RING_CAP];
> + struct xhci_trb in_trb[DBC_TRB_RING_CAP];
> + uint8_t out_wrk_buf[DBC_WORK_RING_CAP];
> + struct xhci_erst_segment erst __aligned(16);
> + struct xhci_dbc_ctx ctx __aligned(16);
> + struct xhci_string_descriptor str_buf[DBC_STRINGS_COUNT];
> + /*
> + * Don't place anything else on this page - it will be
> + * DMA-reachable by the USB controller.
> + */
> +};
> +static struct dbc_dma_bufs dbc_dma_bufs __section(".bss.page_aligned");
Don't you also need __aligned(PAGE_SIZE) here? (Strictly speaking
the type itself would need page alignment, but enforcing it just
for the variable is enough since we force suitable "post"-alignment
in the linker script. Provided, of course, that all other
contributions to the section also force the necessary alignment,
but I think we can take this for given - I do recall changing some
items several years ago, and a quick grep looks to confirm it.)
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |