* Possible USB Mass Storage bug on Xilinx's Zynq
@ 2021-04-19 13:05 Bruno L. Albrecht
2021-04-20 4:15 ` Sean Anderson
0 siblings, 1 reply; 4+ messages in thread
From: Bruno L. Albrecht @ 2021-04-19 13:05 UTC (permalink / raw)
To: u-boot
Hello people,
it's my first post here, so forgive me if I do something wrong. I'll try to
be short and clear.
I'm developing on an Avnet PicoZed (based on a Xilinx Zynq SoC) and my
objective is to expose the eMMC as a Mass Storage Device over an USB
Connection.
I used the following config flag on defconfig file (
https://github.com/Xilinx/u-boot-xlnx/blob/master/configs/xilinx_zynq_virt_defconfig
):
CONFIG_CMD_USB_MASS_STORAGE=y
To the Device Tree (
https://github.com/Xilinx/u-boot-xlnx/blob/master/arch/arm/dts/zynq-picozed.dts)
I added the usb configuration:
aliases {
> <...>
> usb0 = &usb0;
> };
> &usb0 {
> u-boot,dm-pre-reloc;
> status = "okay";
> dr_mode = "peripheral";
> };
Compilation goes fine and U-Boot boots fine. The eMMC is correctly
recognized.
Then I use the following command to initiate the USB Mass Storage:
ums 0 mmc 0
When on *Windows*, the command is successful for a brief moment and then
the board resets with the following error:
Zynq> ums 0 mmc 0
> UMS: LUN 0, dev 0, hwpart 0, sector 0x0, count 0xe30000
> \EP1/in FAIL info=40000080 pg0=3eb393c0
> EP1/in FAIL info=40008080 pg0=3eb3d3c0
> EP1/in FAIL info=d8080 pg0=3eaebdc0
> CACHE: Misaligned operation at range [00000001, 00000041]
> CACHE: Misaligned operation at range [00000001, 00000041]
> data abort
> pc : [<3ff67dec>] lr : [<3ff67dec>]
> reloc pc : [<0405cdec>] lr : [<0405cdec>]
> sp : 3eae81f0 ip : 00000031 fp : 3ffd957c
> r10: 00000001 r9 : 3eaeaed0 r8 : 00000001
> r7 : 3ffd9524 r6 : 00000001 r5 : 3ffd94ec r4 : 3ffd95a4
> r3 : e0001000 r2 : 00000001 r1 : 00000041 r0 : 00000001
> Flags: nZCv IRQs off FIQs off Mode SVC_32
> Code: eaffff7e e2861040 e1a00006 ebfe91a6 (e5963004)
> Resetting CPU ...
>
Since I'm working on a Windows machine, I have a Ubuntu running on a
Virtual Machine (VirtualBox). So I made a rule to bypass the USB device
that would be created on Windows directly to the Virtual Machine (virtually
connected the USB device to my Ubuntu).
When I do this, the command works. I can access the eMMC and format it and
do whatever I want. If I remove the filter and let Windows enumerate the
device, the board resets again.
I took a look at the dmesg messages on Ubuntu and found the following (the
only unusual messages are in bold):
[101436.784042] usb 1-2: new full-speed USB device number 25 using ohci-pci
>
> *[101437.232208] usb 1-2: config 1 interface 0 altsetting 0 endpoint 0x81
> has invalid maxpacket 512, setting to 64[101437.232210] usb 1-2: config 1
> interface 0 altsetting 0 endpoint 0x2 has invalid maxpacket 512, setting to
> 64*
> [101437.477816] usb 1-2: New USB device found, idVendor=<custom>,
> idProduct=<custom>, bcdDevice= 2.21
> [101437.477818] usb 1-2: New USB device strings: Mfr=1, Product=2,
> SerialNumber=0
> [101437.477820] usb 1-2: Product: my product name
> [101437.477821] usb 1-2: Manufacturer: my manufacturer
> [101437.702297] usb-storage 1-2:1.0: USB Mass Storage device detected
> [101437.713954] scsi host3: usb-storage 1-2:1.0
> [101438.976664] scsi 3:0:0:0: Direct-Access Linux UMS disk 0
> ffff PQ: 0 ANSI: 2
> [101438.979158] sd 3:0:0:0: Attached scsi generic sg2 type 0
> [101439.284100] sd 3:0:0:0: [sdb] 14876672 512-byte logical blocks: (7.62
> GB/7.09 GiB)
> [101439.468523] sd 3:0:0:0: [sdb] Write Protect is off
> [101439.468526] sd 3:0:0:0: [sdb] Mode Sense: 0f 00 00 00
> [101439.653020] sd 3:0:0:0: [sdb] Write cache: enabled, read cache:
> enabled, doesn't support DPO or FUA
> [101440.759756] sdb: sdb1
> [101441.559083] sd 3:0:0:0: [sdb] Attached SCSI removable disk
>
Not that it sounds like it would interfere, but the USB from the SoC is
connected to an USB Hub (USB2514B), to which other devices are connected
and work correctly on both Windows and Linux.
Any ideas of what might be happening?
Cheers
Bruno
--
Eng. Bruno Landau Albrecht
e-mail: brunolalb at gmail.com
^ permalink raw reply [flat|nested] 4+ messages in thread* Possible USB Mass Storage bug on Xilinx's Zynq
2021-04-19 13:05 Possible USB Mass Storage bug on Xilinx's Zynq Bruno L. Albrecht
@ 2021-04-20 4:15 ` Sean Anderson
2021-04-20 13:53 ` Bruno L. Albrecht
0 siblings, 1 reply; 4+ messages in thread
From: Sean Anderson @ 2021-04-20 4:15 UTC (permalink / raw)
To: u-boot
On 4/19/21 9:05 AM, Bruno L. Albrecht wrote:
> Hello people,
> it's my first post here, so forgive me if I do something wrong. I'll try to
> be short and clear.
>
> I'm developing on an Avnet PicoZed (based on a Xilinx Zynq SoC) and my
> objective is to expose the eMMC as a Mass Storage Device over an USB
> Connection.
>
> I used the following config flag on defconfig file (
> https://github.com/Xilinx/u-boot-xlnx/blob/master/configs/xilinx_zynq_virt_defconfig
> ):
>
> CONFIG_CMD_USB_MASS_STORAGE=y
>
>
> To the Device Tree (
> https://github.com/Xilinx/u-boot-xlnx/blob/master/arch/arm/dts/zynq-picozed.dts)
> I added the usb configuration:
>
> aliases {
>> <...>
>> usb0 = &usb0;
>> };
>> &usb0 {
>> u-boot,dm-pre-reloc;
>> status = "okay";
>> dr_mode = "peripheral";
>> };
>
>
> Compilation goes fine and U-Boot boots fine. The eMMC is correctly
> recognized.
> Then I use the following command to initiate the USB Mass Storage:
>
> ums 0 mmc 0
>
>
> When on *Windows*, the command is successful for a brief moment and then
> the board resets with the following error:
>
> Zynq> ums 0 mmc 0
>> UMS: LUN 0, dev 0, hwpart 0, sector 0x0, count 0xe30000
>> \EP1/in FAIL info=40000080 pg0=3eb393c0
>> EP1/in FAIL info=40008080 pg0=3eb3d3c0
>> EP1/in FAIL info=d8080 pg0=3eaebdc0
>> CACHE: Misaligned operation at range [00000001, 00000041]
>> CACHE: Misaligned operation at range [00000001, 00000041]
>> data abort
>> pc : [<3ff67dec>] lr : [<3ff67dec>]
>> reloc pc : [<0405cdec>] lr : [<0405cdec>]
I don't know anything about this platform, but I'd start with figuring
out what function/line these are from. You can find out by grepping
through objdump -S.
--Sean
>> sp : 3eae81f0 ip : 00000031 fp : 3ffd957c
>> r10: 00000001 r9 : 3eaeaed0 r8 : 00000001
>> r7 : 3ffd9524 r6 : 00000001 r5 : 3ffd94ec r4 : 3ffd95a4
>> r3 : e0001000 r2 : 00000001 r1 : 00000041 r0 : 00000001
>> Flags: nZCv IRQs off FIQs off Mode SVC_32
>> Code: eaffff7e e2861040 e1a00006 ebfe91a6 (e5963004)
>> Resetting CPU ...
>>
>
> Since I'm working on a Windows machine, I have a Ubuntu running on a
> Virtual Machine (VirtualBox). So I made a rule to bypass the USB device
> that would be created on Windows directly to the Virtual Machine (virtually
> connected the USB device to my Ubuntu).
>
> When I do this, the command works. I can access the eMMC and format it and
> do whatever I want. If I remove the filter and let Windows enumerate the
> device, the board resets again.
>
> I took a look at the dmesg messages on Ubuntu and found the following (the
> only unusual messages are in bold):
>
> [101436.784042] usb 1-2: new full-speed USB device number 25 using ohci-pci
>>
>> *[101437.232208] usb 1-2: config 1 interface 0 altsetting 0 endpoint 0x81
>> has invalid maxpacket 512, setting to 64[101437.232210] usb 1-2: config 1
>> interface 0 altsetting 0 endpoint 0x2 has invalid maxpacket 512, setting to
>> 64*
>> [101437.477816] usb 1-2: New USB device found, idVendor=<custom>,
>> idProduct=<custom>, bcdDevice= 2.21
>> [101437.477818] usb 1-2: New USB device strings: Mfr=1, Product=2,
>> SerialNumber=0
>> [101437.477820] usb 1-2: Product: my product name
>> [101437.477821] usb 1-2: Manufacturer: my manufacturer
>> [101437.702297] usb-storage 1-2:1.0: USB Mass Storage device detected
>> [101437.713954] scsi host3: usb-storage 1-2:1.0
>> [101438.976664] scsi 3:0:0:0: Direct-Access Linux UMS disk 0
>> ffff PQ: 0 ANSI: 2
>> [101438.979158] sd 3:0:0:0: Attached scsi generic sg2 type 0
>> [101439.284100] sd 3:0:0:0: [sdb] 14876672 512-byte logical blocks: (7.62
>> GB/7.09 GiB)
>> [101439.468523] sd 3:0:0:0: [sdb] Write Protect is off
>> [101439.468526] sd 3:0:0:0: [sdb] Mode Sense: 0f 00 00 00
>> [101439.653020] sd 3:0:0:0: [sdb] Write cache: enabled, read cache:
>> enabled, doesn't support DPO or FUA
>> [101440.759756] sdb: sdb1
>> [101441.559083] sd 3:0:0:0: [sdb] Attached SCSI removable disk
>>
>
> Not that it sounds like it would interfere, but the USB from the SoC is
> connected to an USB Hub (USB2514B), to which other devices are connected
> and work correctly on both Windows and Linux.
>
> Any ideas of what might be happening?
>
>
> Cheers
> Bruno
>
>
^ permalink raw reply [flat|nested] 4+ messages in thread* Possible USB Mass Storage bug on Xilinx's Zynq
2021-04-20 4:15 ` Sean Anderson
@ 2021-04-20 13:53 ` Bruno L. Albrecht
2021-04-20 14:11 ` Michal Simek
0 siblings, 1 reply; 4+ messages in thread
From: Bruno L. Albrecht @ 2021-04-20 13:53 UTC (permalink / raw)
To: u-boot
The EP1/in fails are on drivers/usb/gadget/ci_udc.c @ line 628. They happen
during enumeration (I'm able to check even exactly which package fails
using Wireshark + USB PCAP), but I couldn't find out more. I was hoping
someone had been through that and had an idea of could be happening before
I dive into the wonders of USB drivers.
The CACHE fails are from arch/arm/lib/cache.c @ line 64.
On Tue, 20 Apr 2021 at 06:15, Sean Anderson <seanga2@gmail.com> wrote:
> On 4/19/21 9:05 AM, Bruno L. Albrecht wrote:
> > Hello people,
> > it's my first post here, so forgive me if I do something wrong. I'll try
> to
> > be short and clear.
> >
> > I'm developing on an Avnet PicoZed (based on a Xilinx Zynq SoC) and my
> > objective is to expose the eMMC as a Mass Storage Device over an USB
> > Connection.
> >
> > I used the following config flag on defconfig file (
> >
> https://github.com/Xilinx/u-boot-xlnx/blob/master/configs/xilinx_zynq_virt_defconfig
> > ):
> >
> > CONFIG_CMD_USB_MASS_STORAGE=y
> >
> >
> > To the Device Tree (
> >
> https://github.com/Xilinx/u-boot-xlnx/blob/master/arch/arm/dts/zynq-picozed.dts
> )
> > I added the usb configuration:
> >
> > aliases {
> >> <...>
> >> usb0 = &usb0;
> >> };
> >> &usb0 {
> >> u-boot,dm-pre-reloc;
> >> status = "okay";
> >> dr_mode = "peripheral";
> >> };
> >
> >
> > Compilation goes fine and U-Boot boots fine. The eMMC is correctly
> > recognized.
> > Then I use the following command to initiate the USB Mass Storage:
> >
> > ums 0 mmc 0
> >
> >
> > When on *Windows*, the command is successful for a brief moment and then
> > the board resets with the following error:
> >
> > Zynq> ums 0 mmc 0
> >> UMS: LUN 0, dev 0, hwpart 0, sector 0x0, count 0xe30000
> >> \EP1/in FAIL info=40000080 pg0=3eb393c0
> >> EP1/in FAIL info=40008080 pg0=3eb3d3c0
> >> EP1/in FAIL info=d8080 pg0=3eaebdc0
> >> CACHE: Misaligned operation at range [00000001, 00000041]
> >> CACHE: Misaligned operation at range [00000001, 00000041]
> >> data abort
> >> pc : [<3ff67dec>] lr : [<3ff67dec>]
> >> reloc pc : [<0405cdec>] lr : [<0405cdec>]
>
> I don't know anything about this platform, but I'd start with figuring
> out what function/line these are from. You can find out by grepping
> through objdump -S.
>
> --Sean
>
> >> sp : 3eae81f0 ip : 00000031 fp : 3ffd957c
> >> r10: 00000001 r9 : 3eaeaed0 r8 : 00000001
> >> r7 : 3ffd9524 r6 : 00000001 r5 : 3ffd94ec r4 : 3ffd95a4
> >> r3 : e0001000 r2 : 00000001 r1 : 00000041 r0 : 00000001
> >> Flags: nZCv IRQs off FIQs off Mode SVC_32
> >> Code: eaffff7e e2861040 e1a00006 ebfe91a6 (e5963004)
> >> Resetting CPU ...
> >>
> >
> > Since I'm working on a Windows machine, I have a Ubuntu running on a
> > Virtual Machine (VirtualBox). So I made a rule to bypass the USB device
> > that would be created on Windows directly to the Virtual Machine
> (virtually
> > connected the USB device to my Ubuntu).
> >
> > When I do this, the command works. I can access the eMMC and format it
> and
> > do whatever I want. If I remove the filter and let Windows enumerate the
> > device, the board resets again.
> >
> > I took a look at the dmesg messages on Ubuntu and found the following
> (the
> > only unusual messages are in bold):
> >
> > [101436.784042] usb 1-2: new full-speed USB device number 25 using
> ohci-pci
> >>
> >> *[101437.232208] usb 1-2: config 1 interface 0 altsetting 0 endpoint
> 0x81
> >> has invalid maxpacket 512, setting to 64[101437.232210] usb 1-2: config
> 1
> >> interface 0 altsetting 0 endpoint 0x2 has invalid maxpacket 512,
> setting to
> >> 64*
> >> [101437.477816] usb 1-2: New USB device found, idVendor=<custom>,
> >> idProduct=<custom>, bcdDevice= 2.21
> >> [101437.477818] usb 1-2: New USB device strings: Mfr=1, Product=2,
> >> SerialNumber=0
> >> [101437.477820] usb 1-2: Product: my product name
> >> [101437.477821] usb 1-2: Manufacturer: my manufacturer
> >> [101437.702297] usb-storage 1-2:1.0: USB Mass Storage device detected
> >> [101437.713954] scsi host3: usb-storage 1-2:1.0
> >> [101438.976664] scsi 3:0:0:0: Direct-Access Linux UMS disk 0
> >> ffff PQ: 0 ANSI: 2
> >> [101438.979158] sd 3:0:0:0: Attached scsi generic sg2 type 0
> >> [101439.284100] sd 3:0:0:0: [sdb] 14876672 512-byte logical blocks:
> (7.62
> >> GB/7.09 GiB)
> >> [101439.468523] sd 3:0:0:0: [sdb] Write Protect is off
> >> [101439.468526] sd 3:0:0:0: [sdb] Mode Sense: 0f 00 00 00
> >> [101439.653020] sd 3:0:0:0: [sdb] Write cache: enabled, read cache:
> >> enabled, doesn't support DPO or FUA
> >> [101440.759756] sdb: sdb1
> >> [101441.559083] sd 3:0:0:0: [sdb] Attached SCSI removable disk
> >>
> >
> > Not that it sounds like it would interfere, but the USB from the SoC is
> > connected to an USB Hub (USB2514B), to which other devices are connected
> > and work correctly on both Windows and Linux.
> >
> > Any ideas of what might be happening?
> >
> >
> > Cheers
> > Bruno
> >
> >
>
>
--
Eng. Bruno Landau Albrecht
e-mail: brunolalb at gmail.com
^ permalink raw reply [flat|nested] 4+ messages in thread* Possible USB Mass Storage bug on Xilinx's Zynq
2021-04-20 13:53 ` Bruno L. Albrecht
@ 2021-04-20 14:11 ` Michal Simek
0 siblings, 0 replies; 4+ messages in thread
From: Michal Simek @ 2021-04-20 14:11 UTC (permalink / raw)
To: u-boot
Hi,
On 4/20/21 3:53 PM, Bruno L. Albrecht wrote:
> The EP1/in fails are on drivers/usb/gadget/ci_udc.c @ line 628. They happen
> during enumeration (I'm able to check even exactly which package fails
> using Wireshark + USB PCAP), but I couldn't find out more. I was hoping
> someone had been through that and had an idea of could be happening before
> I dive into the wonders of USB drivers.
> The CACHE fails are from arch/arm/lib/cache.c @ line 64.
There shouldn't be anything xilinx specific in this code but clearly
that start/stop address are not aligned.
Thanks,
Michal
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-04-20 14:11 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-04-19 13:05 Possible USB Mass Storage bug on Xilinx's Zynq Bruno L. Albrecht
2021-04-20 4:15 ` Sean Anderson
2021-04-20 13:53 ` Bruno L. Albrecht
2021-04-20 14:11 ` Michal Simek
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox