* [openeuler:OLK-6.6 3064/3064] arch/arm64/kvm/arm.c:177 kvm_cap_arm_enable_hdbss() warn: iterator 'i' not incremented
@ 2025-10-30 6:35 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2025-10-30 6:35 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: kernel@openeuler.org
TO: Zhenyu Ye <yezhenyu2@huawei.com>
tree: https://gitee.com/openeuler/kernel.git OLK-6.6
head: bc2ee8a789087459d9852f01e10d2f31abf5a13d
commit: bd6106e348d70cafe3f030ba6f60fb010f09b82e [3064/3064] arm64/kvm: using ioctl to enable/disable the HDBSS feature
:::::: branch date: 3 hours ago
:::::: commit date: 7 months ago
config: arm64-randconfig-r073-20251029 (https://download.01.org/0day-ci/archive/20251030/202510301418.ngVZneV0-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 14.3.0
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202510301418.ngVZneV0-lkp@intel.com/
New smatch warnings:
arch/arm64/kvm/arm.c:177 kvm_cap_arm_enable_hdbss() warn: iterator 'i' not incremented
Old smatch warnings:
arch/arm64/kvm/arm.c:899 kvm_arm_halt_guest() warn: iterator 'i' not incremented
arch/arm64/kvm/arm.c:909 kvm_arm_resume_guest() warn: iterator 'i' not incremented
arch/arm64/kvm/arm.c:2682 kvm_mpidr_to_vcpu() warn: iterator 'i' not incremented
vim +/i +177 arch/arm64/kvm/arm.c
749cf76c5a363e arch/arm/kvm/arm.c Christoffer Dall 2013-01-20 131
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 132 static int kvm_cap_arm_enable_hdbss(struct kvm *kvm,
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 133 struct kvm_enable_cap *cap)
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 134 {
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 135 unsigned long i;
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 136 struct kvm_vcpu *vcpu;
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 137 struct page *hdbss_pg;
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 138 int size = cap->args[0];
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 139
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 140 if (!system_supports_hdbss()) {
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 141 kvm_err("This system does not support HDBSS!\n");
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 142 return -EINVAL;
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 143 }
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 144
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 145 if (size < 0 || size > HDBSS_MAX_SIZE) {
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 146 kvm_err("Invalid HDBSS buffer size: %d!\n", size);
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 147 return -EINVAL;
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 148 }
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 149
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 150 /* Enable the HDBSS feature if size > 0, otherwise disable it. */
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 151 if (size) {
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 152 kvm->enable_hdbss = true;
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 153 kvm->arch.vtcr |= VTCR_EL2_HD | VTCR_EL2_HDBSS;
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 154
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 155 kvm_for_each_vcpu(i, vcpu, kvm) {
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 156 hdbss_pg = alloc_pages(GFP_KERNEL, size);
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 157 if (!hdbss_pg) {
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 158 kvm_err("Alloc HDBSS buffer failed!\n");
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 159 return -EINVAL;
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 160 }
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 161
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 162 vcpu->arch.hdbss.br_el2 = HDBSSBR_EL2(page_to_phys(hdbss_pg), size);
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 163 vcpu->arch.hdbss.prod_el2 = 0;
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 164
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 165 /*
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 166 * We should kick vcpus out of guest mode here to
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 167 * load new vtcr value to vtcr_el2 register when
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 168 * re-enter guest mode.
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 169 */
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 170 kvm_vcpu_kick(vcpu);
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 171 }
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 172
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 173 kvm_info("Enable HDBSS success, HDBSS buffer size: %d\n", size);
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 174 } else if (kvm->enable_hdbss) {
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 175 kvm->arch.vtcr &= ~(VTCR_EL2_HD | VTCR_EL2_HDBSS);
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 176
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 @177 kvm_for_each_vcpu(i, vcpu, kvm) {
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 178 /* Kick vcpus to flush hdbss buffer. */
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 179 kvm_vcpu_kick(vcpu);
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 180
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 181 hdbss_pg = phys_to_page(HDBSSBR_BADDR(vcpu->arch.hdbss.br_el2));
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 182 if (hdbss_pg)
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 183 __free_pages(hdbss_pg, HDBSSBR_SZ(vcpu->arch.hdbss.br_el2));
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 184
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 185 vcpu->arch.hdbss.br_el2 = 0;
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 186 vcpu->arch.hdbss.prod_el2 = 0;
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 187 }
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 188
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 189 kvm->enable_hdbss = false;
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 190 kvm_info("Disable HDBSS success\n");
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 191 }
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 192
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 193 return 0;
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 194 }
bd6106e348d70c arch/arm64/kvm/arm.c eillon 2025-04-02 195
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2025-10-30 6:36 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-30 6:35 [openeuler:OLK-6.6 3064/3064] arch/arm64/kvm/arm.c:177 kvm_cap_arm_enable_hdbss() warn: iterator 'i' not incremented kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.