[U-Boot] [PATCH v2] usb: xhci-mem: Fix scratchpad array issue

After updating the value of dev_context_ptrs[0], we should flush this from cache to memory. Otherwise the xhci controller won't use it.
Signed-off-by: Ye Li ye.li@nxp.com Reviewed-by: Marek Vasut marex@denx.de --- Changes for v2: - Change to use sizeof(ctrl->dcbaa->dev_context_ptrs[0])
drivers/usb/host/xhci-mem.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c index 04ab540..84c2c33 100644 --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c @@ -369,6 +369,9 @@ static int xhci_scratchpad_alloc(struct xhci_ctrl *ctrl) ctrl->dcbaa->dev_context_ptrs[0] = cpu_to_le64((uintptr_t)scratchpad->sp_array);
+ xhci_flush_cache((uintptr_t)&ctrl->dcbaa->dev_context_ptrs[0], + sizeof(ctrl->dcbaa->dev_context_ptrs[0])); + page_size = xhci_readl(&hcor->or_pagesize) & 0xffff; for (i = 0; i < 16; i++) { if ((0x1 & page_size) != 0)

On 1/7/19 3:45 AM, Ye Li wrote:
After updating the value of dev_context_ptrs[0], we should flush this from cache to memory. Otherwise the xhci controller won't use it.
Signed-off-by: Ye Li ye.li@nxp.com Reviewed-by: Marek Vasut marex@denx.de
Looks good to me, waiting for A-B/R-B from Bin.
Changes for v2:
- Change to use sizeof(ctrl->dcbaa->dev_context_ptrs[0])
drivers/usb/host/xhci-mem.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c index 04ab540..84c2c33 100644 --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c @@ -369,6 +369,9 @@ static int xhci_scratchpad_alloc(struct xhci_ctrl *ctrl) ctrl->dcbaa->dev_context_ptrs[0] = cpu_to_le64((uintptr_t)scratchpad->sp_array);
- xhci_flush_cache((uintptr_t)&ctrl->dcbaa->dev_context_ptrs[0],
sizeof(ctrl->dcbaa->dev_context_ptrs[0]));
- page_size = xhci_readl(&hcor->or_pagesize) & 0xffff; for (i = 0; i < 16; i++) { if ((0x1 & page_size) != 0)

On Mon, Jan 7, 2019 at 10:45 AM Ye Li ye.li@nxp.com wrote:
After updating the value of dev_context_ptrs[0], we should flush this from cache to memory. Otherwise the xhci controller won't use it.
Signed-off-by: Ye Li ye.li@nxp.com Reviewed-by: Marek Vasut marex@denx.de
Changes for v2:
- Change to use sizeof(ctrl->dcbaa->dev_context_ptrs[0])
drivers/usb/host/xhci-mem.c | 3 +++ 1 file changed, 3 insertions(+)
Reviewed-by: Bin Meng bmeng.cn@gmail.com
But you need do the same in xhci_scratchpad_free() too. Please fix it in v3.
Regards, Bin

On 1/7/2019 5:54 PM, Bin Meng wrote:
On Mon, Jan 7, 2019 at 10:45 AM Ye Li ye.li@nxp.com wrote:
After updating the value of dev_context_ptrs[0], we should flush this from cache to memory. Otherwise the xhci controller won't use it.
Signed-off-by: Ye Li ye.li@nxp.com Reviewed-by: Marek Vasut marex@denx.de
Changes for v2:
- Change to use sizeof(ctrl->dcbaa->dev_context_ptrs[0])
drivers/usb/host/xhci-mem.c | 3 +++ 1 file changed, 3 insertions(+)
Reviewed-by: Bin Meng bmeng.cn@gmail.com
But you need do the same in xhci_scratchpad_free() too. Please fix it in v3.
Regards, Bin
The xhci controller has been stopped before calling xhci_scratchpad_free, is it necessary to add flush in this function? And I don't see other buffers are flushed when freeing.
Best regards, Ye Li

On Tue, Jan 8, 2019 at 12:00 PM Ye Li ye.li@nxp.com wrote:
On 1/7/2019 5:54 PM, Bin Meng wrote:
On Mon, Jan 7, 2019 at 10:45 AM Ye Li ye.li@nxp.com wrote:
After updating the value of dev_context_ptrs[0], we should flush this from cache to memory. Otherwise the xhci controller won't use it.
Signed-off-by: Ye Li ye.li@nxp.com Reviewed-by: Marek Vasut marex@denx.de
Changes for v2:
- Change to use sizeof(ctrl->dcbaa->dev_context_ptrs[0])
drivers/usb/host/xhci-mem.c | 3 +++ 1 file changed, 3 insertions(+)
Reviewed-by: Bin Meng bmeng.cn@gmail.com
But you need do the same in xhci_scratchpad_free() too. Please fix it in v3.
The xhci controller has been stopped before calling xhci_scratchpad_free, is it necessary to add flush in this function? And I don't see other buffers are flushed when freeing.
Ah, yes. It's called after HCD reset, so that's not needed.
Regards, Bin

On 1/8/19 7:34 AM, Bin Meng wrote:
On Tue, Jan 8, 2019 at 12:00 PM Ye Li ye.li@nxp.com wrote:
On 1/7/2019 5:54 PM, Bin Meng wrote:
On Mon, Jan 7, 2019 at 10:45 AM Ye Li ye.li@nxp.com wrote:
After updating the value of dev_context_ptrs[0], we should flush this from cache to memory. Otherwise the xhci controller won't use it.
Signed-off-by: Ye Li ye.li@nxp.com Reviewed-by: Marek Vasut marex@denx.de
Changes for v2:
- Change to use sizeof(ctrl->dcbaa->dev_context_ptrs[0])
drivers/usb/host/xhci-mem.c | 3 +++ 1 file changed, 3 insertions(+)
Reviewed-by: Bin Meng bmeng.cn@gmail.com
But you need do the same in xhci_scratchpad_free() too. Please fix it in v3.
The xhci controller has been stopped before calling xhci_scratchpad_free, is it necessary to add flush in this function? And I don't see other buffers are flushed when freeing.
Ah, yes. It's called after HCD reset, so that's not needed.
Shall I pick this for this release then, Bin ?

On Tue, Jan 8, 2019 at 7:19 PM Marek Vasut marex@denx.de wrote:
On 1/8/19 7:34 AM, Bin Meng wrote:
On Tue, Jan 8, 2019 at 12:00 PM Ye Li ye.li@nxp.com wrote:
On 1/7/2019 5:54 PM, Bin Meng wrote:
On Mon, Jan 7, 2019 at 10:45 AM Ye Li ye.li@nxp.com wrote:
After updating the value of dev_context_ptrs[0], we should flush this from cache to memory. Otherwise the xhci controller won't use it.
Signed-off-by: Ye Li ye.li@nxp.com Reviewed-by: Marek Vasut marex@denx.de
Changes for v2:
- Change to use sizeof(ctrl->dcbaa->dev_context_ptrs[0])
drivers/usb/host/xhci-mem.c | 3 +++ 1 file changed, 3 insertions(+)
Reviewed-by: Bin Meng bmeng.cn@gmail.com
But you need do the same in xhci_scratchpad_free() too. Please fix it in v3.
The xhci controller has been stopped before calling xhci_scratchpad_free, is it necessary to add flush in this function? And I don't see other buffers are flushed when freeing.
Ah, yes. It's called after HCD reset, so that's not needed.
Shall I pick this for this release then, Bin ?
Yes, I think so.
Regards, Bin

On 1/9/19 8:05 AM, Bin Meng wrote:
On Tue, Jan 8, 2019 at 7:19 PM Marek Vasut marex@denx.de wrote:
On 1/8/19 7:34 AM, Bin Meng wrote:
On Tue, Jan 8, 2019 at 12:00 PM Ye Li ye.li@nxp.com wrote:
On 1/7/2019 5:54 PM, Bin Meng wrote:
On Mon, Jan 7, 2019 at 10:45 AM Ye Li ye.li@nxp.com wrote:
After updating the value of dev_context_ptrs[0], we should flush this from cache to memory. Otherwise the xhci controller won't use it.
Signed-off-by: Ye Li ye.li@nxp.com Reviewed-by: Marek Vasut marex@denx.de
Changes for v2:
- Change to use sizeof(ctrl->dcbaa->dev_context_ptrs[0])
drivers/usb/host/xhci-mem.c | 3 +++ 1 file changed, 3 insertions(+)
Reviewed-by: Bin Meng bmeng.cn@gmail.com
But you need do the same in xhci_scratchpad_free() too. Please fix it in v3.
The xhci controller has been stopped before calling xhci_scratchpad_free, is it necessary to add flush in this function? And I don't see other buffers are flushed when freeing.
Ah, yes. It's called after HCD reset, so that's not needed.
Shall I pick this for this release then, Bin ?
Yes, I think so.
Applied, thanks.
participants (3)
-
Bin Meng
-
Marek Vasut
-
Ye Li