Re: How to pass through off-chip USB controller
Tzeng, Tonny <tonny.tzeng@...>
Hi Edwin,
Thanks for helping out. The `lspci –s 1:0.0 –vvv’ generates below output:
01:00.0 USB controller: Fresco Logic FL1100 USB 3.0 Host Controller (rev 20) (prog-if 30 [XHCI]) Subsystem: Fresco Logic FL1100 USB 3.0 Host Controller Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0, Cache Line Size: 64 bytes Interrupt: pin A routed to IRQ 22 Region 0: Memory at 91500000 (64-bit, non-prefetchable) [size=64K] Region 2: Memory at 91511000 (64-bit, non-prefetchable) [size=4K] Region 4: Memory at 91510000 (64-bit, non-prefetchable) [size=4K] Capabilities: <access denied> Kernel driver in use: xhci_hcd Kernel modules: xhci_pci
Debugging DM using gdb indicates the program stops at hw/pci/passthrough.c:560. Any idea what could be the cause? I don’t know how to capture the whole screen output from the UOS kernel, the detailed gdb log is attached for your inspection. Thanks.
Regards, Tonny
From: acrn-users@... [mailto:acrn-users@...]
On Behalf Of Zhai, Edwin
Sent: Monday, July 30, 2018 1:46 PM To: acrn-users@... Subject: Re: [acrn-users] How to pass through off-chip USB controller
Tonny, The config is ok. Could you pls. try gdb to catch the seg fault? Just replace the 'acrn-dm' with 'gdb --args acrn-dm...' in your launch script. Did you paste all your console output when launch UOS? And 'lspci -s 1:0.0 -vvv' in SOS should give some helpful info. thanks, Edwin
On 2018/7/30 11:21, Tzeng, Tonny wrote:
-- Best Rgds, Edwin |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Re: How to pass through off-chip USB controller
Zhai, Edwin <edwin.zhai@...>
You didn't dump the pci capabilities, so pls. use sudo for lspci. The error comes from MSIx accessing, and need debug... On 2018/7/30 15:39, Tzeng, Tonny wrote:
-- Best Rgds, Edwin |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Re: How to pass through off-chip USB controller
Tzeng, Tonny <tonny.tzeng@...>
Hi Edwin,
Oops, the lspci output generated by root this time. Thanks. 01:00.0 USB controller: Fresco Logic FL1100 USB 3.0 Host Controller (rev 20) (prog-if 30 [XHCI]) Subsystem: Fresco Logic FL1100 USB 3.0 Host Controller Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0, Cache Line Size: 64 bytes Interrupt: pin A routed to IRQ 22 Region 0: Memory at 91500000 (64-bit, non-prefetchable) [size=64K] Region 2: Memory at 91511000 (64-bit, non-prefetchable) [size=4K] Region 4: Memory at 91510000 (64-bit, non-prefetchable) [size=4K] Capabilities: [40] Power Management version 3 Flags: PMEClk- DSI- D1+ D2- AuxCurrent=375mA PME(D0+,D1+,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Capabilities: [50] MSI: Enable- Count=1/8 Maskable- 64bit+ Address: 0000000000000000 Data: 0000 Capabilities: [70] Express (v2) Endpoint, MSI 00 DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 10.000W DevCtl: CorrErr- NonFatalErr- FatalErr- UnsupReq- RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ MaxPayload 256 bytes, MaxReadReq 512 bytes DevSta: CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend- LnkCap: Port #0, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s unlimited, L1 unlimited ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp- LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+ ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 5GT/s (ok), Width x1 (ok) TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- DevCap2: Completion Timeout: Not Supported, TimeoutDis+, LTR-, OBFF Not Supported AtomicOpsCap: 32bit- 64bit- 128bitCAS- DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled AtomicOpsCtl: ReqEn- LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis- Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS- Compliance De-emphasis: -6dB LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-, EqualizationPhase1- EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest- Capabilities: [b0] MSI-X: Enable+ Count=8 Masked- Vector table: BAR=2 offset=00000000 PBA: BAR=4 offset=00000000 Capabilities: [100 v1] Advanced Error Reporting UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol- CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr- CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+ AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn- MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap- HeaderLog: 00000000 00000000 00000000 00000000 Kernel driver in use: xhci_hcd Kernel modules: xhci_pci Regards, Tonny
From: acrn-users@... [mailto:acrn-users@...]
On Behalf Of Zhai, Edwin
Sent: Monday, July 30, 2018 4:14 PM To: acrn-users@... Subject: Re: [acrn-users] How to pass through off-chip USB controller
You didn't dump the pci capabilities, so pls. use sudo for lspci. The error comes from MSIx accessing, and need debug...
On 2018/7/30 15:39, Tzeng, Tonny wrote:
-- Best Rgds, Edwin |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ACRN hypervisor project mailing list: Please subscribe acrn-users@lists.projectacrn.org for ACRN usage feedback or discussion
Dear all,
With more ACRN community developers and users joining ACRN project mailing list, the original acrn-dev@... becomes “crowded” and many “how-to-use” topic or feedback may be overwhelmed by the patch review mails. Let’s re-activate another mailing list acrn-users@... to consolidate ACRN usage related discussion.
New: Mailing list name: For ACRN’s users Mailing list: acrn-users@... Group Description: To discuss ACRN hypervisor environment setup, configuration, tool usage, debug information, bug reporting and feedback, etc. How to subscribe: Go to https://lists.projectacrn.org/g/acrn-users, click “+Join This Group” blue button, fill in your email address.
No Change: Mailing list name: For ACRN’s developers Mailing list: acrn-dev@... Group Description: For ACRN’s hypervisor, SOS, UOS, mediator’s feature discussion, design review, patch review, etc. How to subscribe: Go to https://lists.projectacrn.org/g/acrn-dev, click “+Join This Group” blue button, fill in your email address.
FYI: ACRN overall mailing list website: https://lists.projectacrn.org/g/main/subgroups
Best regards. Hongbo Tel: +86-21-6116 7445 MP: +86-1364 1793 689 Mail: hongbo.wang@...
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Test email for new ACRN user mailing list. <EOM>
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ACRN Project Technical Community Meeting Minutes - 8/29
ACRN Project TCM - 29th August 2018
Meeting Minutes Archive: https://drive.google.com/drive/u/2/folders/1_XTGu6re3BOQAjtPx636Mz1T5lOy2UWC
Location
Agenda
1.1. A new mailing list “acrn-users@...g
” was created to discuss ACRN hypervisor usage related topics, for example, ACRN hypervisor environment setup, configuration, tool usage, debug information, bug reporting and feedback, etc.
1.2 ACRN project execution roadmap has been upload into Github: https://github.com/projectacrn/acrn-hypervisor/projects/1
Download foil from ACRN Presentation->ACRN_TCM->WW35’18.
Q: why do we need cpu state table when we are hardcoding ACPI info in DSDT for guest?
Q: for APL case , all the core have the same freq ,right ?
Q: core 1 have p1 passively? because p1 take higher priority then p2?
N/A
Marketing/Events
Resources
====================
Best regards.
Hongbo
Tel: +86-21-6116 7445
MP: +86-1364 1793 689
Mail: hongbo.wang@...
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
This is a test email to verify the ACRN user mailing list <EOM>
Sorry for the spam.
Best regards. Hongbo Tel: +86-21-6116 7445 MP: +86-1364 1793 689 Mail: hongbo.wang@...
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ACRN Project Technical Community Meeting Minutes - 9/5/2018
Meeting Minutes Archive: https://drive.google.com/drive/u/2/folders/1_XTGu6re3BOQAjtPx636Mz1T5lOy2UWC
ACRN Project TCM - 5th September 2018
Location
Attendees (Total 43, 9/5)
Agenda
Download foil from ACRN Presentation->ACRN_TCM->WW36’18.
Q: How many maximum vCPU can be supported on Apollo Lake platform? A: 4 vCPU.
Q: Is there any communication b.w. these vcpu threads? A: Yes, the IPI is used to communicate between the vcpu threads.
We don't support the CPU sharing so far, the main reason of introducing the scheduler is to manage the lifecycle of the guests. Imagine that we need to destroy the vcpus when its serving VM
is shutdown, and we need to put its physical CPUs to some state even if the vcpu is destroyed. that state is default idle. In order to switch the default idle and vcpu thread, we introduced the scheduler to make it simple. That means the current scheduler is
only able to schedule between vcpu thread and default idle thread on the same physical CPU.
Q: What is the real mode address for AP? how was it handle before vSBL introduction? A: AP reset vector is provided by SIPI message which is sent by BSP, no matter vSBL is used or not. that
means AP real mode address is decided by the OS when it boots smp secondary CPUs, not by hypervisor.
Q: OS uses AFAIK a real mode address from ACPI region I think 0x90000-0xA00000. how this mem is accessable to guest if ACPI is not passthru to guest?
Q: How extensive is your instruction decoder wrt the full Intel instruction set? Are you focusing on specific read and write instructions or does Intel have a full instruction set decoder?
Marketing/Events
Resources
===============================
Best regards.
Hongbo
Tel: +86-21-6116 7445
MP: +86-1364 1793 689
Mail: hongbo.wang@...
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Re: How to pass through off-chip USB controller
Any update on this? Geoffroy |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Re: How to pass through off-chip USB controller
Wu, Binbin
Hi,
toggle quoted message
Show quoted text
/The following instruction will take PCI device 'USB Host 00:15.0' as an example to show the set-up steps./ / / /If lspci is not found in your clearlinux sos, you can install the tool by/ /swupd bundle-add sysadmin-basic / / / [edit <http://los-vmm.sc.intel.com/mediawiki//index.php?title=VTd_Enabling_Guide&action=edit§ion=3>]Hide PCI device in SOS 1) Find out the physical BDF (bus:device.function) for USB Host $ lspci <<<<<<<output>>>>>>> ... *00:15.0* USB controller: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series USB xHCI (rev 0b) ... 2) Find out the numeric PCI ID for USB Host $ lspci -n <<<<<<<output>>>>>>> ... *00:15.0* 0c03:*8086:5aa8* (rev 0b) ... 3) Hide the PCI device in SOS via stub driver Execute the following commands to hide the PCI device "00:15.0" in SOS echo "8086 5aa8" > /sys/bus/pci/drivers/pci-stub/new_id echo "0000:00:15.0" > /sys/bus/pci/devices/0000:00:15.0/driver/unbind echo "0000:00:15.0" > /sys/bus/pci/drivers/pci-stub/bind You could double-check whether the PCI device is hidden successfully via the following command. $ cat /sys/bus/pci/devices/0000:00:15.0/uevent If it is done successfully, the driver will be shown as 'pci-stub'. Example: root@jiechen-xubuntu:~# cat /sys/bus/pci/devices/0000:00:15.0/uevent *DRIVER=pci-stub* PCI_CLASS=C0330 PCI_ID=8086:5AA8 PCI_SUBSYS_ID=0000:0000 PCI_SLOT_NAME=0000:00:15.0 MODALIAS=pci:v00008086d00005AA8sv00000000sd00000000bc0Csc03i30 [edit <http://los-vmm.sc.intel.com/mediawiki//index.php?title=VTd_Enabling_Guide&action=edit§ion=4>]Add parameters in the boot-up command for UOS Add the following parameters in the boot-up command to pass PCI device 0:15.0 to guest @ virtual PCI 0:7.0 -s 7,passthru,0/15/0 You could change '7' to any other number as long as it's not used by other devices yet. On 9/6/2018 8:47 PM, Geoffroy Van Cutsem wrote:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Re: How to pass through off-chip USB controller
Wu, Binbin
Resend due to format issue.
toggle quoted message
Show quoted text
If lspci is not found in your clearlinux sos, you can install the tool by: $ swupd bundle-add sysadmin-basic The following instruction will take PCI device 'USB Host 00:15.0' as an example to show the set-up steps. Hide PCI device in SOS 1) Find out the physical BDF (bus:device.function) for USB Host $ lspci <<<<<<<output>>>>>>> ... 00:15.0 USB controller: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series USB xHCI (rev 0b) ... 2) Find out the numeric PCI ID for USB Host $ lspci -n <<<<<<<output>>>>>>> ... 00:15.0 0c03: 8086:5aa8 (rev 0b) ... 3) Hide the PCI device in SOS via stub driver Execute the following commands to hide the PCI device "00:15.0" in SOS echo "8086 5aa8" > /sys/bus/pci/drivers/pci-stub/new_id echo "0000:00:15.0" > /sys/bus/pci/devices/0000:00:15.0/driver/unbind echo "0000:00:15.0" > /sys/bus/pci/drivers/pci-stub/bind You could double-check whether the PCI device is hidden successfully via the following command. $ cat /sys/bus/pci/devices/0000:00:15.0/uevent If it is done successfully, the driver will be shown as 'pci-stub'. Example: root@jiechen-xubuntu:~# cat /sys/bus/pci/devices/0000:00:15.0/uevent DRIVER=pci-stub PCI_CLASS=C0330 PCI_ID=8086:5AA8 PCI_SUBSYS_ID=0000:0000 PCI_SLOT_NAME=0000:00:15.0 MODALIAS=pci:v00008086d00005AA8sv00000000sd00000000bc0Csc03i30 4) Add parameters in the boot-up command for UOS Add the following parameters in the boot-up command to pass PCI device 0:15.0 to guest @ virtual PCI 0:7.0 -s 7,passthru,0/15/0 You could change '7' to any other number as long as it's not used by other devices yet. On 9/6/2018 8:47 PM, Geoffroy Van Cutsem wrote:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Re: How to pass through off-chip USB controller
Hi Binbin,
toggle quoted message
Show quoted text
Thanks for jumping in! I think Tonny (who initiated this thread) was further than that, you suspected -----Original Message----- |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Re: How to pass through off-chip USB controller
Ops, hit "send" by mistake earlier
toggle quoted message
Show quoted text
Thanks for jumping in! I think Tonny (who initiated this thread) was further than that. Edwin had indicated the error came from an MSIx access error and had asked for the 'lspci' output to debug this. Tonny provided it here: https://lists.projectacrn.org/g/acrn-users/message/23. I haven't seen any follow-up after that and that was what I was asking in my mail below (unfortunately, I responded from the web interface and it did not include any of the thread history :() Thanks, Geoffroy -----Original Message----- |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Re: How to pass through off-chip USB controller
Zhai, Edwin <edwin.zhai@...>
Sorry, I seemed miss Tonny's reply. From the lspci output from him, this controller support MSI-x,
which probably trigger potential issue in ACRN side.
Geoffroy/Tonny, Are you using the latest ACRN release? Do you have the source
code of ACRN? If so, could you pls. paste your code of '
hw/pci/passthrough.c:560' ? Binbin, Any potential issue for this MSI-x? I suspect this issue comes
from invalid pointer access in MSI-x emulation code. Capabilities: [b0] MSI-X: Enable+ Count=8 Masked- The pci config of this dev from Tonny is: 01:00.0 USB controller: Fresco Logic FL1100 USB 3.0 Host Controller (rev 20) (prog-if 30 [XHCI]) Subsystem: Fresco Logic FL1100 USB 3.0 Host Controller Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0, Cache Line Size: 64 bytes Interrupt: pin A routed to IRQ 22 Region 0: Memory at 91500000 (64-bit, non-prefetchable) [size=64K] Region 2: Memory at 91511000 (64-bit, non-prefetchable) [size=4K] Region 4: Memory at 91510000 (64-bit, non-prefetchable) [size=4K] Capabilities: [40] Power Management version 3 Flags: PMEClk- DSI- D1+ D2- AuxCurrent=375mA PME(D0+,D1+,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Capabilities: [50] MSI: Enable- Count=1/8 Maskable- 64bit+ Address: 0000000000000000 Data: 0000 Capabilities: [70] Express (v2) Endpoint, MSI 00 DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 10.000W DevCtl: CorrErr- NonFatalErr- FatalErr- UnsupReq- RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ MaxPayload 256 bytes, MaxReadReq 512 bytes DevSta: CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend- LnkCap: Port #0, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s unlimited, L1 unlimited ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp- LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+ ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 5GT/s (ok), Width x1 (ok) TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- DevCap2: Completion Timeout: Not Supported, TimeoutDis+, LTR-, OBFF Not Supported AtomicOpsCap: 32bit- 64bit- 128bitCAS- DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled AtomicOpsCtl: ReqEn- LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis- Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS- Compliance De-emphasis: -6dB LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-, EqualizationPhase1- EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest- Capabilities: [b0] MSI-X: Enable+ Count=8 Masked- Vector table: BAR=2 offset=00000000 PBA: BAR=4 offset=00000000 Capabilities: [100 v1] Advanced Error Reporting UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol- CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr- CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+ AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn- MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap- HeaderLog: 00000000 00000000 00000000 00000000 Kernel driver in use: xhci_hcd Kernel modules: xhci_pci On 2018/9/6 20:47, Geoffroy Van Cutsem
wrote:
-- Best Rgds, Edwin |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Re: How to pass through off-chip USB controller
Wu, Binbin
Hi Tonny,
Which version of your clearlinux SOS? Is there any chance that can you confirm that whether hw/pci/passthrough.c:560 is the line of code in bold? static void
msix_table_write(struct vmctx *ctx, int vcpu, struct passthru_dev *ptdev,
uint64_t offset, int size, uint64_t data)
{
struct pci_vdev *dev;
struct msix_table_entry *entry;
uint8_t *dest8;
uint16_t *dest16;
uint32_t *dest32;
uint64_t *dest64;
size_t entry_offset;
uint32_t vector_control;
int index;
dev = ptdev->dev;
if (offset >= dev->msix.pba_offset &&
offset < dev->msix.pba_offset + dev->msix.pba_size) {
switch (size) {
case 1:
dest8 = (uint8_t *)(dev->msix.pba_page + offset -
dev->msix.pba_page_offset);
*dest8 = data;
break;
case 2:
dest16 = (uint16_t *)(dev->msix.pba_page + offset -
dev->msix.pba_page_offset);
*dest16 = data;
break;
case 4:
dest32 = (uint32_t *)(dev->msix.pba_page + offset -
dev->msix.pba_page_offset);
*dest32 = data; //is hw/pci/passthrough.c:560 this line of code?
break;
case 8:
dest64 = (uint64_t *)(dev->msix.pba_page + offset -
dev->msix.pba_page_offset);
*dest64 = data;
break;
default:
break;
}
return;
}
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Re: How to pass through off-chip USB controller
Hi Binbin, Edwin,
The error Tonny got at the time was with this combination (so not the latest as of today): - HV/DM: f815415 - SOS: Clear 24030 w/ 4.14.57-69 kernel
Looking it up on Github, this is the line you’re asking for: https://github.com/projectacrn/acrn-hypervisor/blob/acrn-2018w30.4-140000p/devicemodel/hw/pci/passthrough.c#L560
And yes, that’s the one you have below
J Geoffroy
From: acrn-users@... [mailto:acrn-users@...]
On Behalf Of Wu, Binbin
Sent: Friday, September 7, 2018 9:16 AM To: acrn-users@... Subject: Re: [acrn-users] How to pass through off-chip USB controller
Hi Tonny, static void msix_table_write(struct vmctx *ctx, int vcpu, struct passthru_dev *ptdev, uint64_t offset, int size, uint64_t data) { struct pci_vdev *dev; struct msix_table_entry *entry; uint8_t *dest8; uint16_t *dest16; uint32_t *dest32; uint64_t *dest64; size_t entry_offset; uint32_t vector_control; int index;
dev = ptdev->dev; if (offset >= dev->msix.pba_offset && offset < dev->msix.pba_offset + dev->msix.pba_size) { switch (size) { case 1: dest8 = (uint8_t *)(dev->msix.pba_page + offset - dev->msix.pba_page_offset); *dest8 = data; break; case 2: dest16 = (uint16_t *)(dev->msix.pba_page + offset - dev->msix.pba_page_offset); *dest16 = data; break; case 4: dest32 = (uint32_t *)(dev->msix.pba_page + offset - dev->msix.pba_page_offset); *dest32 = data; //is hw/pci/passthrough.c:560 this line of code? break; case 8: dest64 = (uint64_t *)(dev->msix.pba_page + offset - dev->msix.pba_page_offset); *dest64 = data; break; default: break; } return; }
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Re: How to pass through off-chip USB controller
Wu, Binbin
Hi Geoffroy,
toggle quoted message
Show quoted text
Thanks for providing the info. After checking the code, I did found a logic error when handling msix table read/write in passthrough. I have sent out a patch to fix the issue to acrn-dev@... for review. On 9/7/2018 9:50 PM, Geoffroy Van Cutsem wrote:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Re: How to pass through off-chip USB controller
toggle quoted message
Show quoted text
-----Original Message-----Thanks Binbin! I guess that's the one: https://lists.projectacrn.org/g/acrn-dev/message/11368? We will keep an eye on it (to see when it gets merged) and perhaps even test it beforehand on our side if we get a chance! Thanks, Geoffroy
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Re: How to pass through off-chip USB controller
Wu, Binbin
Hi Geoffroy,
toggle quoted message
Show quoted text
Yes, and the PR has been sent out. https://github.com/projectacrn/acrn-hypervisor/pull/1210 On 9/10/2018 6:36 PM, Geoffroy Van Cutsem wrote:
-----Original Message-----Thanks Binbin! I guess that's the one: https://lists.projectacrn.org/g/acrn-dev/message/11368? |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Re: How to pass through off-chip USB controller
Thanks Binbin!
toggle quoted message
Show quoted text
-----Original Message----- |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|