Commit Graph

2644 Commits

Author SHA1 Message Date
Xiaoguang Wu
ecedf31bd1 DM USB: xHCI: delay 2s for enumeration in resuming process
During UOS S3 resume, the UOS will handle USB disconnect flow then
re-enumeration flow due to vbus drop be emulted for UOS S3 case. The
re-enumeration flow will impact UOS S3 resume latency, this patch
delayed the re-enumeration 2s as the workaround for this issue. Need to
do performance optimization in future.

This 2s can be tune which is depend on how fast UOS S3 resume, it should
be as short as possible to make virtual USB device ready immediately
after UOS screen turn on.

Tracked-On: #2576
Signed-off-by: Conghui Chen <conghui.chen@intel.com>
Signed-off-by: Xiaoguang Wu <xiaoguang.wu@intel.com>
Acked-by: Yu Wang <yu1.wang@intel.com>
2019-02-25 16:43:18 +08:00
Xiaoguang Wu
9844ff0266 DM USB: xHCI: re-design the S3 logic to speed up resuming process
This patch unbinds the kernel driver usbfs with device before suspending
is completed and binds them again during resuming process, this could
avoid a busy loop in SOS due to VBUS drop. This patch could save ~200ms
for resuming process.

Tracked-On: #2576
Signed-off-by: Conghui Chen <conghui.chen@intel.com>
Signed-off-by: Xiaoguang Wu <xiaoguang.wu@intel.com>
Acked-by: Yu Wang <yu1.wang@intel.com>
2019-02-25 16:43:18 +08:00
Xiaoguang Wu
b77755cd58 DM USB: xHCI: refine the de-init logic of xHCI vdevice
Add 'full' and 'non-full' de-initialize support for xHCI virtual
device. The non-full de-initialization mainly release usb_dev
structure and unbind the usbfs with native device. And the full
de-initialize will release all the resources allocated for xHCI
virtual device including the unbinding operation mentioned above

Tracked-On: #2576
Signed-off-by: Conghui Chen <conghui.chen@intel.com>
Signed-off-by: Xiaoguang Wu <xiaoguang.wu@intel.com>
Acked-by: Yu Wang <yu1.wang@intel.com>
2019-02-25 16:43:18 +08:00
Xiaoguang Wu
76a5131b37 DM USB: xHCI: fix PORTSC error in 'pci_xhci_cmd_disable_slot'
The disable slot command is used for forcing a device slot to enter into
disconnect state, a typical usage would be to free a Device Slot when an
USB device is disconnected. But it should not impact the portsc value.

Tracked-On: #2576
Signed-off-by: Conghui Chen <conghui.chen@intel.com>
Signed-off-by: Xiaoguang Wu <xiaoguang.wu@intel.com>
Acked-by: Yu Wang <yu1.wang@intel.com>
2019-02-25 16:43:18 +08:00
Xiaoguang Wu
c9d85cfaea DM USB: xHCI: fix a logic error in 'pci_xhci_portregs_write'
The function 'pci_xhci_portregs_write' always set CCS bit in
Port Status and Control (PORTSC) register when there is
pci_xhci_dev_emu instance existed. This is not right and this
patch is used to fix it.

Tracked-On: #2576
Signed-off-by: Conghui Chen <conghui.chen@intel.com>
Signed-off-by: Xiaoguang Wu <xiaoguang.wu@intel.com>
Acked-by: Yu Wang <yu1.wang@intel.com>
2019-02-25 16:43:18 +08:00
Xiaoguang Wu
5f36580190 DM USB: xHCI: introduce get/set function for PORTSC register
Port Status and Control (PORTSC) register is one of the most frequently
accessed regiseter according the xHCI spec. This patch implement a pair
of set/get function to access PORTS and it gives a clear code structure
and help a lot for debugging work.

Tracked-On: #2576
Signed-off-by: Conghui Chen <conghui.chen@intel.com>
Signed-off-by: Xiaoguang Wu <xiaoguang.wu@intel.com>
Acked-by: Yu Wang <yu1.wang@intel.com>
2019-02-25 16:43:18 +08:00
Qi Yadong
b7f5614387 hv: search additional argument when parsing seed from ABL
Due to ABL design change, it will reword the "dev_sec_info.param_addr="
to "ABL.svnseed" in command line.

Tracked-On: #2605
Signed-off-by: Qi Yadong <yadong.qi@intel.com>
Acked-by: Zhu Bing <bing.zhu@intel.com>
2019-02-25 16:03:21 +08:00
Victor Sun
3c16a5ebc2 HV: code style change for abl_seed_parse.c
- remove goto;

- make sure procedure has one exit point;

Tracked-On: #861
Signed-off-by: Victor Sun <victor.sun@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
2019-02-25 16:03:21 +08:00
Zhi Jin
2fa810076b hv: debug: mark the mmio address for npk log as hv owned
Otherwise, page fault will be triggered when writing npk log
to these mmio addresses.

Tracked-On: #2589
Signed-off-by: Zhi Jin <zhi.jin@intel.com>
Reviewed-by: Yonghua Huang <yonghua.huang@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
2019-02-22 13:50:13 +08:00
Binbin Wu
1de4450e9f dm: bios: update vsbl to v1.2
Update vFastboot to v1.2
Newly changed:
	Optimize fastboot erase for virtual IO block medium.
	Update openssl to version 1.0.2q.

Tracked-On: #2595
Signed-off-by: Binbin Wu <binbin.wu@intel.com>
2019-02-22 13:49:50 +08:00
Xiaoguang Wu
be7b034763 DM USB: xHCI: fix an issue during BULK transfer
When LINK type TRB are received among multiple BULK TRBs, the copying
logic in DM will miss one or more TRBs. This patch is used to fix it.

Tracked-On: #2581
Signed-off-by: Conghui Chen <conghui.chen@intel.com>
Signed-off-by: Xiaoguang Wu <xiaoguang.wu@intel.com>
Acked-by: Yu Wang <yu1.wang@intel.com>
2019-02-22 13:48:21 +08:00
Xiaoguang Wu
7aabea6b06 DM USB: xHCI: fix an error logic in DRD logic
The patch (commit id: b39524e) didn't achieve its purpose completely.
This patch is used to fix it.

Tracked-On: #2557
Signed-off-by: Xiaoguang Wu <xiaoguang.wu@intel.com>
Acked-by: Yu Wang <yu1.wang@intel.com>
2019-02-22 13:48:10 +08:00
Yan, Like
1b58076191 tools: do not include unnecessary files in release build
This commit removes the unnecessary tool files in release build, including:
- entire acrnlog module
- entire acrntrace module
- acrnctl binary in acrn-manager

Tracked-On: #2575
Signed-off-by: Yan, Like <like.yan@intel.com>
Reviewed-by: Huang, Yonghua <yonghua.huang@intel.com>
Acked-by: Yin Fengwei <fengwei.yin@intel.com>
2019-02-22 11:28:38 +08:00
Minggui Cao
d251afa8f3 DM: modify acpi for IASL to support ACPI6.3
patch is from Alex Du for IASL tool updated to support
ACPI 6.3 version.

Tracked-On: #2565
Signed-off-by: Alek Du <alek.du@intel.com>
Signed-off-by: Minggui Cao <minggui.cao@intel.com>
2019-02-20 14:18:33 +08:00
Yin Fengwei
870688e67b hv: isrvec_stk_top could be zero once we enable APICv
With APICv enabled, it's possible that the interrupt is not
injected through VMX_ENTRY_INT_INFO_FIELD. In that case, the
isrvec_stk_top will not be increased.

Tracked-On: #2558
Signed-off-by: Yin Fengwei <fengwei.yin@intel.com>
2019-02-20 11:00:37 +08:00
Yu Wang
b39524e989 DM USB: xHCI: do not reset DRD role during S3 process
To reset USB DRD role is one workaround for adb lost issue with xDCI
passthrough which reproduced in S3 stress test.

This workaround will involve the system global reset if xDCI working in
SuperSpeed mode. This is maybe caused by PMC firmware can't graceful
power gate the xDCI during S3 suspend. The current USB DRD driver will
set STATIC switch bits which will cause ungraceful DRD switch, it may
make the xDCI enter a unknown state, then involved this global reset
issue.

BTW, base on latest code base, the adb lost issue can't reproduce even
remove this workaround. So remove the old workaround for above reasons.

Tracked-On: #2557
Signed-off-by: Yu Wang <yu1.wang@intel.com>
Reviewed-by: Xiaoguang Wu <xiaoguang.wu@intel.com>
Acked-by: Yin Fengwei <fengwei.yin@intel.com>
Signed-off-by: Yu Wang <yu1.wang@intel.com>
2019-02-19 13:53:11 +08:00
Qi Yadong
22df0249b5 dm: vtpm: disable Virtual TPM feature
There is no requirement for Virual TPM feature on GP2.0 branch.

Tracked-On:#2553
Signed-off-by: Qi Yadong <yadong.qi@intel.com>
Acked-by: Yin Fengwei <fengwei.yin@intel.com>
2019-02-19 13:41:58 +08:00
Wei Liu
e40927ca35 dm: add specify log for starting uos
add log for uos when to begin

Tracked-On: #2552
Signed-off-by: Wei Liu <weix.w.liu@intel.com>
Reviewed-by: Yin Fengwei <fengwei.yin@intel.com>
2019-02-19 13:20:56 +08:00
Conghui Chen
5df9cbe36a dm: script: enable discard feature for virtio-blk
To support discard for virtio-blk, the backend file should also located
in a filesystem which support discard. So, mount /data partition with '
-o discard'.
Then, add 'discard' to virtio-blk to enable this feature.

1. Erase operations on UOS will trigger the discard on SOS instead of
writing zero, which will save erase time.

2. Discard in storage firmware will move the mapped host address range to
the unmapped host address range. So, when delete a file in UOS, discard
will trigger the space collection on storage, so that in the next write
operation, it need not to do erase first.

Tracked-On: #2547
Signed-off-by: Conghui Chen <conghui.chen@intel.com>
Reviewed-by: Yu Wang <yu1.wang@intel.com>
Acked-by: Binbin Wu <binbin.wu@intel.com>
2019-02-18 18:28:55 +08:00
Conghui Chen
a82cafe92d dm: storage: change DISCARD to synchronous mode
For virtio-blk, when the backend is a regular file, the discard
and
is implemented by fallocate(), but this function will not wait for
the discard command handled by disk.
So, add fdatasync to make sure the DISCARD is executed
synchronously.

Tracked-On: #2547
Signed-off-by: Conghui Chen <conghui.chen@intel.com>
Acked-by: Wang Yu <yu1.wang@intel.com>
2019-02-18 18:28:55 +08:00
Conghui Chen
b595abcc23 dm: storage: support discard command
Support DISCARD command is meaningful when eMMC usage is high or
there are lots of remove operations. For example, when Guest
Android is running, there will be lots of files being created and
removed. However, virtio-blk BE does not support DISCARD command,
data remove operation in UOS will not trigger erase in eMMC. After
period of time, the eMMC will be consumed out, and erase must be
done by eMMC firmware before writing any new data. This causes the
eMMC performance decrease in the whole system (SOS and UOS).
To solve the problem, DISCARD should be supported in virtio-blk BE.

Tracked-On: #2547
Signed-off-by: Conghui Chen <conghui.chen@intel.com>
Reviewed-by: Shuo A Liu <shuo.a.liu@intel.com>
Acked-by: Yu Wang <yu1.wang@intel.com>
2019-02-18 18:28:55 +08:00
Conghui Chen
c96e33ca64 dm: storage: rename delete to discard
To keep consistent with kernal code, change delete to discard.

Tracked-On: #2547
Signed-off-by: Conghui Chen <conghui.chen@intel.com>
Reviewed-by: Shuo A Liu <shuo.a.liu@intel.com>
Acked-by: Yu Wang <yu1.wang@intel.com>
2019-02-18 18:28:55 +08:00
Wei Liu
0cdc13fa0e hv: extend the AC bit of rflags operations for smap
For apl_sdc_stable branch, we now have stac and clac to set and
clear AC bit of rflags. But it can't handle following sequence:
     stac
       stac
       clac
       user mode address access here will trigger page fault
     clac

This patch introduce two more functions:
     - stac_save: Save the rflags and set AC bit
     - ac_restore: Restore the AC bit saved to rflags

Now, only sbuf_put/get are using these new APIs.

Tracked-On: #2525
Signed-off-by: Yin Fengwei <fengwei.yin@intel.com>
2019-02-15 14:38:53 +08:00
Min Lim
9f9750051d profiling: enable to capture dropped samples while buffering
Since the profiling utilizes the limited size of buffer to capture
sample data, dropping samples could happen while collecting data
if data is generated faster than flushing by consumer. Capturing
the dropped sample info is critical to understand how much the data
is reliable to use.

To capture the information, the new hypercall "PROFILING_GET_STATUS"
is introduced.

Tracked-On: #2474
Signed-off-by: Manisha Chinthapally <manisha.chinthapally@intel.com>
Signed-off-by: Min Lim <min.yeol.lim@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
Signed-off-by: Min Lim <min.yeol.lim@intel.com>
2019-02-15 08:47:49 +08:00
Min Lim
ff48cb0778 profiling: simplify the handling of vmexit loading list
The patch simplifies the way to merge the msr vmexit loading list with HV,
which was already merged to master.

Tracked-On: #2422
Signed-off-by: Min Lim <min.yeol.lim@intel.com>
2019-02-03 14:18:12 +08:00
Yin Fengwei
135ed80f51 watchdog: map the watchdog reset to warm reset
Per debugging requirement, map the watchdog reset to warm reset.
So the ramconsole could be used to capture the kernel log of UOS
before watchdog is hit.

Tracked-On: #2471
Signed-off-by: Yin Fengwei <fengwei.yin@intel.com>
2019-02-01 11:41:51 +08:00
Min Lim
1de5feb7bb profiling: fix the system freeze issue when running profiling
tool

The msr load/restore during vmexit/vmenty is enabled in HV by
default. The profiling has assumption that it's only user for this
feature, which could overwrite of HV default setting.

This fix combines the msr load list for vmexit when profiling.

Tracked-On: #2422
Signed-off-by: Min Lim <min.yeol.lim@intel.com>
2019-01-30 11:47:36 +08:00
Minggui Cao
b963bd571d HV: check to avoid interrupt delay timer add twice
to edge interrupt, like eth device, it can triger the interrupt again
when its IRQ in softirq entry queue or in timer list.

in current design, for sofrirq entry, it calls "list_del" before
"list_add_tail", to avoid the entry added twice.

so for interrupt delay timer, add to check if it is started
then just drop the next one; to avoid it enqueue twice.

Tracked-On: #2365
Signed-off-by: Minggui Cao <minggui.cao@intel.com>
Reviewed-by: Li, Fei1 <fei1.li@intel.com>
2019-01-30 10:23:34 +08:00
yuhong.tao@intel.com
01bd5ac8dd tools: acrnd: fix wait_for_stop() return wrong vm state
The wait_for_stop() first check if all VM are stopped or suspended.
It first check if VMs are stopped, then check if they are suspend.

If the VMs change state from running to stoped, after check VMs
stopped fail, before start check suspend state. wait_for_stop() will
mistake resopnse 'All vms have entered S3 state successfully'

To fix that, wait_for_stop() must only update VMs's state once, and
see if they are stopped, or suspended.

Tracked-On: #2398
Signed-off-by: Tao Yuhong <yuhong.tao@intel.com>
2019-01-28 10:02:17 +08:00
Yin Fengwei
928dfefc62 dm: add log for debuging pci while vm reset
Print some log to dmesg when init/deinit vdev.

Tracked-On: #2419
Signed-off-by: Yin Fengwei <fengwei.yin@intel.com>
2019-01-25 13:56:46 +08:00
Manisha Chinthapally
68a2aa5086 security: bounds checking to avoid buffer overflow error
The array index of 'vm_list' may be out of bound.
Updated size of profiling_vm_info_list

Bug: ACRN-2544
Tracked-On: #2385
Signed-off-by: Manisha Chinthapally <manisha.chinthapally@intel.com>
2019-01-24 09:51:34 +08:00
Chaohong guo
3bbe6b739c HV: fix per-cpu stack relocation in trampoline.c
In write_trampoline_stack_sym(), when do relocation for pcpu's stack,
it wrongly adds an offset. As a result, during booting, when non-BSP
CPU (APs) tries to run trampoline code once they are waken up by BSP
via SIPI, system hangs.

Tracked-On: #2035
Signed-off-by: Chaohong guo <chaohong.guo@intel.com>
2019-01-24 08:27:55 +08:00
Chaohong guo
5b88e59ca4 HV: init_paging() wrongly calcuate the size of hypervisor
when relocation is enabled, the calcuation of HV size in init_paging
routine is not right. As a result, it doesn't enable NX bit for many
pages which don't belong to hypervisor text section.

Tracked-On: #2035
Signed-off-by: Chaohong guo <chaohong.guo@intel.com>
2019-01-24 08:27:55 +08:00
Chaohong guo
3884ccb97f HV: adjust the starting addr of HV to be 2M-aligned
In init_paging(), when modify page table, it does a round up to 2M on
the starting address of HV memory. If the address is not 2M aligned,
memory overwrite occurs, or memory attribute(cache, u/s) may be not
right. Besides, trusty memory (uos_sworld_memory) in .bss section is 2M
aligned during compiling,  after enabling HV memroy 2M alignment, when
relocation is enabled, EFI stub or other loaders just needs to find a
2M-aligned starting addr for HV memory.

Tracked-On: #2035
Signed-off-by: Chaohong guo <chaohong.guo@intel.com>
2019-01-24 08:27:55 +08:00
Chaohong guo
b3b34fe2ad HV: save efi_ctx into HV to use after init_paging()
efi_ctx is passed by EFI stub to hypervisor. The memory was allocated
right after HV binary and marked as Efireserved. But HV is doing a 2MB
alignment in init_paging() and might overwrite the efi_ctx struct or
change the page table attribute. Now, EFI STUB uses Efiloaderdata type
memory and the memory can be re-use by hypervisor/sos after boot time
done. HV should save itself a copy if the content is still needed after
init_paging().

Tracked-On: #2035
Signed-off-by: Chaohong guo <chaohong.guo@intel.com>
2019-01-24 08:27:55 +08:00
Chaohong guo
3fee32c0bb EFI: Allocate EFI boot related struct from EFI allocation pool
Current EFI boot related structs are allocated right after HV binary, and
marked as EfiResered. In fact, the memory should be reclaimed and
managed by HV once EFI boot is done, Moreover, HV is doing 2M alignment,
which is overwriting this allocated memory. This patch is to allocate EFI
info from EFI allocation pool and marked as EFiloaderdata, so that the
memory is used by HV, also, it will reduce the fragmentation.

Tracked-On: #2035
Signed-off-by: Chaohong guo <chaohong.guo@intel.com>
Reviewed-by: Eddie Dong <eddie.dong@intel.com>
2019-01-24 08:27:55 +08:00
Chaohong guo
ea143dc43b EFI: Allocate 2M aligned memory for hypervisor image
Hypervisor does memory alignment during initializing paging(init_paging)
although the starting address allocated by EFI stub doesn't meet the
requirement. As a result, HV might overwrite some memory belong to UEFI
BIOS. The patch introduces a new routine to fix the issue.

Tracked-On: #2035
Signed-off-by: Chaohong guo <chaohong.guo@intel.com>
2019-01-24 08:27:55 +08:00
yuhong.tao@intel.com
fa768b875f tools: acrn-manager: fix mngr_send_msg() return 0 when read ack fail
When do IPC with mngr_send_msg(), and ack is required but failed to
get ack,  mngr_send_msg() still return 0, that is not correct.

Tracked-On: #2398
Signed-off-by: Tao Yuhong <yuhong.tao@intel.com>
2019-01-23 12:52:11 +08:00
Binbin Wu
a86008ebf0 dm: script: use -d to check existence of gpio460
/sys/class/gpio/gpio460 is a directory,
should use -d instead of -f to check its existence.

Tracked-On: #2328
Signed-off-by: Binbin Wu <binbin.wu@intel.com>
2019-01-22 08:33:57 +08:00
Wei Liu
6a6fe829c7 launch_uos.sh remove sd card passthru option
1. remove the sd card option to reducing the boot time.

Tracked-On: #2331
Signed-off-by: Wei Liu <weix.w.liu@intel.com>
2019-01-17 16:52:03 +08:00
Binbin Wu
38d9eb5611 dm: script: echo 'high' instead of "out" to direction for gpio460
echo 'high' instead of "out" to direction for gpio460 to avoid gpio pin value glitch.

Tracked-On: #2328
Signed-off-by: Binbin Wu <binbin.wu@intel.com>
2019-01-17 14:38:22 +08:00
Binbin Wu
80c394a86a dm: passthru: increase the delay after wifi reset
Increase the delay to 200ms after wifi reset for link training done.

Tracked-On: #2328
Signed-off-by: Binbin Wu <binbin.wu@intel.com>
2019-01-16 13:06:21 +08:00
Wei Liu
19b6eea150 dm: add dm log to kmsg for profiling
Collect the dm log to dmesg for profiing.
These mesage will be easy to profile when dm booting.

Tracked-On: #2336
Signed-off-by: Wei Liu <weix.w.liu@intel.com>
Reviewed-by: Yin Fengwei <fengwei.yin@intel.com>
2019-01-14 19:38:54 +08:00
Xiaoguang Wu
83279f8573 DM USB: xHCI: WA for an isochronous crash issue
The current xHCI mediator doesn't well support disable endpoint command.
This patch is one workaround for disable endpoint command to avoid
xHCI mediator to continue handle already dropped data.

Tracked-On: #2325
Signed-off-by: Xiaoguang Wu <xiaoguang.wu@intel.com>
Acked-by: Yu Wang <yu1.wang@intel.com>
2019-01-14 13:27:57 +08:00
Xiaoguang Wu
79b145f89f DM USB: xHCI: WA for the 'lost adb' issue.
This patch is one xDCI passthrough workaround. To support DRD in Guest,
the xDCI does VT-d pass through, and DRD be emulated in xHCI mediator.
With Guest S3 stress test, ramdonly the xDCI can't be emuerated by USB
host even the DRD is already switch to device mode. When this issue
reproduce, does DRD switch to host then switch back can resuce this
issue.

Besides, the virtual drd regiters need to be set to reset value during
Guest warm reset flow.

Tracked-On: #2326
Signed-off-by: Xiaoguang Wu <xiaoguang.wu@intel.com>
Acked-by: Yu Wang <yu1.wang@intel.com>y
2019-01-14 13:27:37 +08:00
Binbin Wu
a4014db275 dm: passthru: reset wifi chip via gpio
During UOS reboot, sometime the wifi firmware status is wrong and can't
handled by UOS driver, this patch add gpio reset for the wifi chip to avoid
such error.

Tracked-On: #2328
Signed-off-by: Binbin Wu <binbin.wu@intel.com>
2019-01-14 12:47:53 +08:00
Binbin Wu
a021cb26bb dm: script: export gpio460 for wifi reset
GPIO460 is used to reset wifi chip on apl-mab.
Export the GPIO pin to userspace so that it can be used in device model.

Tracked-On: #2328
Signed-off-by: Binbin Wu <binbin.wu@intel.com>
2019-01-14 12:47:53 +08:00
Wei Liu
c85153e7fa lunch_uos.sh: reduce the booting time
1. reduce the time once offline cpu failed.
2. remove the passthru of sd card for GP2.0.

Tracked-On: #2331
Signed-off-by: Wei Liu <weix.w.liu@intel.com>
2019-01-14 12:28:20 +08:00
Feng Tang
7fa8886907 DM: sos_bootargs: Add panic_print parameter to help debugging
Adding this parameter so that it could provide more info when
kernel panic happens. And this has almost no overhead as it only
uses several existing kernel APIs.

The 0x1f is a bitmask for type of info to be dumped, and it means
it will print task/memory/timer/lock/ftrace info when panic happens.

Tracked-On: #2309
Signed-off-by: Feng Tang <feng.tang@intel.com>
Reviewed-by: Binbin Wu <binbin.wu@intel.com>
2019-01-14 11:29:50 +08:00
yuhong.tao@intel.com
d7199ccc3b tools: acrnd: Fix launch UOS by timer list without fork()
When acrnd_vm_timer_func() launch UOS, it need fork() and run, so
that do not block the main process.

Tracked-On: #2306
Signed-off-by: Tao Yuhong <yuhong.tao@intel.com>
Signed-off-by: Tao Yuhong <yuhong.tao@intel.com>
2019-01-14 11:18:46 +08:00