On 08/03/2016 08:00, Peter Xu wrote: > First of all, this function cannot be inlined even with always_inline, > so removing inline.
Why? always_inline fixes the error for me. > int i; > - uint32_t tmp[len / sizeof(uint32_t)]; > + uint32_t n = len / sizeof(uint32_t); > +#define __BUF_SIZE (12) > + uint32_t tmp[__BUF_SIZE]; > > + assert(__BUF_SIZE >= n); Instead of a #define, you can use ARRAY_SIZE(tmp). Paolo > assert((len % sizeof(uint32_t)) == 0); > > - for (i = 0; i < (len / sizeof(uint32_t)); i++) { > + for (i = 0; i < n; i++) { > tmp[i] = cpu_to_le32(buf[i]); > } > pci_dma_write(PCI_DEVICE(xhci), addr, tmp, len); > +#undef __BUF_SIZE > } > > static XHCIPort *xhci_lookup_port(XHCIState *xhci, struct USBPort *uport) >