Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

powercap: intel_rapl: Add support for RAPTORLAKE and RAPTORLAKE_P #372

Open
wants to merge 10,000 commits into
base: master
Choose a base branch
from

Conversation

6ZhangWei
Copy link

Add RAPTORLAKE and RAPTORLAKE_P to the list of supported processor models in the Intel RAPL power capping driver.

ChristianKoenigAMD and others added 30 commits November 4, 2022 17:47
This reverts commit 250195f.

The job should now be initialized when we reach the parser functions.

v2: merge improved application check into this patch
v3: back to the original test, but use the right ring

Signed-off-by: Christian König <[email protected]>
Reviewed-by: Alex Deucher <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
drivers/gpu/drm/drm_atomic_helper.c:802: warning: expecting prototype for drm_atomic_helper_check_wb_connector_state(). Prototype was for drm_atomic_helper_check_wb_encoder_state() instead.

Link: https://bugzilla.openanolis.cn/show_bug.cgi?id=2216
Reported-by: Abaci Robot <[email protected]>
Signed-off-by: Jiapeng Chong <[email protected]>
Signed-off-by: Thomas Zimmermann <[email protected]>
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
Open-code drm_plane_init() and remove the function from DRM. The
implementation of drm_plane_init() is a simple wrapper around a call
to drm_universal_plane_init(), so drivers can just use that instead.

Signed-off-by: Thomas Zimmermann <[email protected]>
Reviewed-by: Javier Martinez Canillas <[email protected]>
Reviewed-by: Laurent Pinchart <[email protected]>
Reviewed-by: Lyude Paul <[email protected]> # nouveau
Acked-by: Jyri Sarha <[email protected]>
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
Provide drm_univeral_plane_alloc() to allocate and initialize a
plane. Code for non-atomic drivers uses this pattern. Convert them to
the new function. The modeset helpers contain a quirk for handling their
color formats differently. Set the flag outside plane allocation.

The new function is already deprecated to some extend. Drivers should
rather use drmm_univeral_plane_alloc() or drm_universal_plane_init().

v2:
	* kerneldoc fixes (Javier)
	* grammar fixes in commit message

Signed-off-by: Thomas Zimmermann <[email protected]>
Reviewed-by: Javier Martinez Canillas <[email protected]>
Reviewed-by: Lyude Paul <[email protected]> # nouveau
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
The plane update and disable helpers are only useful for non-atomic
drivers. Print a warning if an atomic driver calls them.

Suggested-by: Daniel Vetter <[email protected]>
Signed-off-by: Thomas Zimmermann <[email protected]>
Reviewed-by: Javier Martinez Canillas <[email protected]>
Reviewed-by: Laurent Pinchart <[email protected]>
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
Provide DRM_PLANE_NON_ATOMIC_FUNCS, which initializes plane functions
of non-atomic drivers to default values. The macro is not supposed to
be used in new code, but helps with documenting and finding existing
users.

Signed-off-by: Thomas Zimmermann <[email protected]>
Reviewed-by: Javier Martinez Canillas <[email protected]>
Reviewed-by: Laurent Pinchart <[email protected]>
Reviewed-by: Lyude Paul <[email protected]> # nouveau
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
Add 1152x864 into support list.

Signed-off-by: Jammy Huang <[email protected]>
Signed-off-by: Thomas Zimmermann <[email protected]>
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
Some cases are not handled well for ast2600.

Signed-off-by: Jammy Huang <[email protected]>
Signed-off-by: Thomas Zimmermann <[email protected]>
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
The implementation of strscpy() is more robust and safer.

That's now the recommended way to copy NUL terminated strings.

Reported-by: Zeal Robot <[email protected]>
Signed-off-by: Minghao Chi <[email protected]>
Reviewed-by: Neil Armstrong <[email protected]>
Signed-off-by: Neil Armstrong <[email protected]>
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
Instead of using RPM speed, we will use a function from vega20 based on PWM registers.

Reviewed-by: Evan Quan <[email protected]>
Signed-off-by: Yury Zhuravlev <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
Similar to what we did for VCN3 use the job instead of the parser
entity. Cleanup the coding style quite a bit as well.

v2: merge improved application check into this patch
v3: finally fix the check
v4: limit to the correct engine

Signed-off-by: Christian König <[email protected]>
Reviewed-by: Alex Deucher <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
Allows submitting jobs as gang which needs to run on multiple
engines at the same time.

Basic idea is that we have a global gang submit fence representing when the
gang leader is finally pushed to run on the hardware last.

Jobs submitted as gang are never re-submitted in case of a GPU reset since this
won't work and will just deadlock the hardware immediately again.

v2: fix logic inversion, improve documentation, fix rcu

Signed-off-by: Christian König <[email protected]>
Reviewed-by: Alex Deucher <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
Allows submitting jobs as gang which needs to run on multiple engines at the
same time.

All members of the gang get the same implicit, explicit and VM dependencies. So
no gang member will start running until everything else is ready.

The last job is considered the gang leader (usually a submission to the GFX
ring) and used for signaling output dependencies.

Each job is remembered individually as user of a buffer object, so there is no
joining of work at the end.

v2: rebase and fix review comments from Andrey and Yogesh
v3: use READ instead of BOOKKEEP for now because of VM unmaps, set gang
    leader only when necessary
v4: fix order of pushing jobs and adding fences found by Trigger.
v5: fix job index calculation and adding IBs to jobs
v6: fix typo found by Alex

Signed-off-by: Christian König <[email protected]>
Reviewed-by: Alex Deucher <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
Enable 3794 pptable support for SMU13.0.0.

Signed-off-by: Evan Quan <[email protected]>
Acked-by: Guchun Chen <[email protected]>
Reviewed-by: Lijo Lazar <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
The pptable in the vbios is fully ready. The related workarounds
in driver are not needed any more.

Signed-off-by: Evan Quan <[email protected]>
Acked-by: Guchun Chen <[email protected]>
Reviewed-by: Lijo Lazar <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
The return value is no longer initialized before the loop because of
moving code around.

Signed-off-by: Christian König <[email protected]>
Fixes: c2b08e7 ("drm/amdgpu: move entity selection and job init earlier during CS")
Reviewed-by: Guchun Chen <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
Since that has now landed bump the minor to let userspace know about it.

Signed-off-by: Christian König <[email protected]>
Reviewed-by: Alex Deucher <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
…rmarksAndDRAMSpeedChangeSupport()

Most of the arguments are identical between the two call sites and they
can be accessed through the 'struct vba_vars_st' pointer. This reduces
the total amount of stack space that
dml314_ModeSupportAndSystemConfigurationFull() uses by 240 bytes with
LLVM 16 (2216 -> 1976), helping clear up the following clang warning:

  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn314/display_mode_vba_314.c:4020:6: error: stack frame size (2216) exceeds limit (2048) in 'dml314_ModeSupportAndSystemConfigurationFull' [-Werror,-Wframe-larger-than]
  void dml314_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_lib)
       ^
  1 error generated.

Link: ClangBuiltLinux/linux#1710
Reported-by: "kernelci.org bot" <[email protected]>
Tested-by: Maíra Canal <[email protected]>
Signed-off-by: Nathan Chancellor <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
…Schedule()

Most of the arguments are identical between the two call sites and they
can be accessed through the 'struct vba_vars_st' pointer. This reduces
the total amount of stack space that
dml314_ModeSupportAndSystemConfigurationFull() uses by 112 bytes with
LLVM 16 (1976 -> 1864), helping clear up the following clang warning:

  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn314/display_mode_vba_314.c:4020:6: error: stack frame size (2216) exceeds limit (2048) in 'dml314_ModeSupportAndSystemConfigurationFull' [-Werror,-Wframe-larger-than]
  void dml314_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_lib)
       ^
  1 error generated.

Link: ClangBuiltLinux/linux#1710
Reported-by: "kernelci.org bot" <[email protected]>
Tested-by: Maíra Canal <[email protected]>
Signed-off-by: Nathan Chancellor <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
This got lost somewhere along the way, This fixes
audio not working until set_property was called.

Signed-off-by: hongao <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
Return the value append_vbios_pptable() directly instead of storing it in
another redundant variable.

Reported-by: Zeal Robot <[email protected]>
Signed-off-by: ye xingchen <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
Return the value atomctrl_initialize_mc_reg_table_v2_2() directly instead
of storing it in another redundant variable.

Reported-by: Zeal Robot <[email protected]>
Signed-off-by: ye xingchen <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
If the copy of the description string from userspace fails, then the page
for the instance descriptor doesn't get freed before returning -EFAULT,
which leads to a memleak.

Fixes: 7a7a933 ("drm/vmwgfx: Introduce VMware mks-guest-stats")
Signed-off-by: Rafael Mendonca <[email protected]>
Reviewed-by: Martin Krastev <[email protected]>
Signed-off-by: Zack Rusin <[email protected]>
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
The vm status_lock will be used to protect all vm status lists.

Signed-off-by: Philip Yang <[email protected]>
Reviewed-by: Christian König <[email protected]>
Acked-by: Felix Kuehling <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
Use vm_status_lock to protect all vm_status state transitions to allow
them to happen without a reservation lock in unlocked page table
updates.

Signed-off-by: Philip Yang <[email protected]>
Acked-by: Felix Kuehling <[email protected]>
Reviewed-by: Christian König <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
Use vm_status_lock to protect all vm_status state transitions to allow
them to happen without a reservation lock in unlocked page table
updates.

Signed-off-by: Philip Yang <[email protected]>
Acked-by: Felix Kuehling <[email protected]>
Reviewed-by: Christian König <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
Use vm_status_lock to protect all vm_status state transitions to allow
them to happen without a reservation lock in unlocked page table
updates.

Signed-off-by: Philip Yang <[email protected]>
Acked-by: Felix Kuehling <[email protected]>
Reviewed-by: Christian König <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
Use vm_status_lock to protect all vm_status state transitions to allow
them to happen without a reservation lock in unlocked page table
updates.

Signed-off-by: Philip Yang <[email protected]>
Acked-by: Felix Kuehling <[email protected]>
Reviewed-by: Christian König <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
Use vm_status_lock to protect all vm_status state transitions to allow
them to happen without a reservation lock in unlocked page table
updates.

Signed-off-by: Philip Yang <[email protected]>
Acked-by: Felix Kuehling <[email protected]>
Reviewed-by: Christian König <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
Free page table BO from vm resv unlocked context generate below
warnings.

Add a pt_free_work in vm to free page table BO from vm->pt_freed list.
pass vm resv unlock status from page table update caller, and add vm_bo
entry to vm->pt_freed list and schedule the pt_free_work if calling with
vm resv unlocked.

WARNING: CPU: 12 PID: 3238 at
drivers/gpu/drm/ttm/ttm_bo.c:106 ttm_bo_set_bulk_move+0xa1/0xc0
Call Trace:
 amdgpu_vm_pt_free+0x42/0xd0 [amdgpu]
 amdgpu_vm_pt_free_dfs+0xb3/0xf0 [amdgpu]
 amdgpu_vm_ptes_update+0x52d/0x850 [amdgpu]
 amdgpu_vm_update_range+0x2a6/0x640 [amdgpu]
 svm_range_unmap_from_gpus+0x110/0x300 [amdgpu]
 svm_range_cpu_invalidate_pagetables+0x535/0x600 [amdgpu]
 __mmu_notifier_invalidate_range_start+0x1cd/0x230
 unmap_vmas+0x9d/0x140
 unmap_region+0xa8/0x110

Signed-off-by: Philip Yang <[email protected]>
Reviewed-by: Felix Kuehling <[email protected]>
Reviewed-by: Christian König <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
GGGZZZRRR and others added 27 commits November 29, 2022 00:07
Enable PTM for PTM_enabling test on I225 NIC

Tracked-On: projectacrn/acrn-hypervisor#6544

Signed-off-by: zhongru.gu <[email protected]>
From ACRN release 2.5, hypervisor supports relocate kernel to the guest free space. So specify the kernel physical start address is not needed any more.

Tracked-On: projectacrn/acrn-hypervisor#6557

Signed-off-by: pengfujx <[email protected]>
Rename Acrn kernel config name to kernel_config_uefi_service_vm.

Tracked-On: projectacrn/acrn-hypervisor#6744
Signed-off-by: Liu Long <[email protected]>
The CONFIG_SERIAL_8250_NR_UARTS should be increased to at least 48,
and CONFIG_SERIAL_8250_RUNTIME_UARTS should be increased to at least
32 in order to support multi port serial cards out of the box. This
will cover at least the situation, where two 8 port cards are used
simultaneously and there is still some room for internal ports or
the other card or vUARTs.

Signed-off-by: Xiangyang Wu <[email protected]>
  Add Intel TCC buffer driver support for ACRN service VM.

Tracked-On: projectacrn/acrn-hypervisor#7010
Signed-off-by: Yonghua Huang <[email protected]>
Signed-off-by: Zhao Yakui <[email protected]>
Signed-off-by: Yifan Liu <[email protected]>
Enable vsock kernel config in Service VM and Guest VM.

Tracked-On: projectacrn/acrn-hypervisor#7456
Signed-off-by: Liu Long <[email protected]>
Description:
 - Added XFS support in Kernel Service VM config file

Signed-off-by: Ionut Nechita <[email protected]>
Change-Id: Ic76684b701ff5cf7ba90850776240eb2d77287c1
Description:
 - Added XFS support in Kernel User VM config file

Signed-off-by: Ionut Nechita <[email protected]>
Change-Id: I109ea86c3af303b3d86150d07d2d4d966e8d549d
Use 'make savedefconfig' to convert the extensive kernel configuration files
to simplified ones.

Signed-off-by: Geoffroy Van Cutsem <[email protected]>
 This patch extends UIO PCI generic driver to
 support MSI-X interrupt.

Tracked-On:projectacrn/acrn-hypervisor#5407

Signed-off-by: Yonghua Huang <[email protected]>
Signed-off-by: Yuan Liu <[email protected]>
In ACRN, the shared buffer is created to shared data between hypervisor,
kernel and device model (in userpace). This buffer can be allocated and
initialized by kernel or device model.

Add hypercall to register shared buffer(sbuf) to ACRN hyperviosr. The
'vm_id' is used to indicate who owns this sbuf. The 'buffer' is the base
address for sbuf.

Signed-off-by: Conghui <[email protected]>
Reviewed-by: Fei Li <[email protected]>
Asyncio is a new mechanism in ACRN, which is special for these devices
which need high I/O performance. ACRN hypervisor would process the I/O
request from User VM in an async mode.

For this kind of I/O reqeusts, a new shared page is created by device
model in userspace, and register to kernel with ioctl. ACRN hsm driver
will pin the page to avoid page swapping. Use hypercall to pass the base
addresses to hypervisor, so that hypervisor can put asyncio requests to
this buffer.

When User VM traps to hypervisor due to an IO/MMIO access, hypervisor
need to distinguish it between original syncronize IO and asyncronize IO.
So, the hypercalls are added to assign or deassign the aynscio info to
hypervisor.

In ACRN, we use the ioeventfd in vhost device. We also support the
virtio device using ioveventfd for FE to NOTIFY BE. But in current
implementation, when the User VM write the NOTIFY register to notify BE,
it will trap to hypervisor. After the write access is finished, User VM
can return.
To return earlier, we provide an asyncio mode for an I/O request. For
asyncio, hypervisor directly put the request in an asyncio shared buffer,
and then return to User VM. To take use of this mechanism, add a new flag
ACRN_IOEVENTFD_FLAG_ASYNCIO to indicate that the IO is asyncio. And use
hypercall to register the asyncio info to hypervisor.

When the User VM do an IO/MMIO access and traps to hypervisor, hypervisor
will parse the I/O base address, and check if it was registered. If yes,
hypervisor will queue the corresponding ioeventfd to the aysncio buffer,
and inject an interrupt to Service VM. ACRN HSM driver in Service VM
will traverse the fd list and signal the eventfd.

Signed-off-by: Conghui <[email protected]>
Reviewed-by: Fei Li <[email protected]>
Due to the two level schedule model in type 1 hypervisor, Service OS
kernel's scheduler does not aware the running status of the User VM,
which means, a thread may be schedule to a CPU which is idle in Service
OS but actually running in User VM.
For the ioreq dispatch workqueue, as it was in the critical path of I/O
request, and ACRN hypervisor only inject the ioreq interrupt to CPU0, so
migrate to other CPU is meaningless and will bring more latency.
So, remove the WQ_UNBOUND flag, and let CPU0 do the dispatch directly.

Signed-off-by: Conghui <[email protected]>
Reviewed-by: Fei Li <[email protected]>
Add acrn hvlog back for ACRN Hypervisor debug.

Signed-off-by: Fei Li <[email protected]>
Add RAPTORLAKE and RAPTORLAKE_P to the list of supported processor
models in the Intel RAPL power capping driver.

Signed-off-by: Zhangwei6 <[email protected]>
@acrnsi-robot
Copy link

Can one of the admins verify this patch?

@yuhuanX
Copy link

yuhuanX commented Aug 20, 2024

start to run premerge test

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.