Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'bitmap-for-v6.18-rc2' of https://github.com/norov/linux

Pull bitmap fixes from Yury Norov:
"A "unnecessary `unsafe`" warning fix for bitmap/rust, and one leftover
patch for FIELD_PREP_WM16() conversion.

- rust: bitmap: clean Rust 1.92.0 `unused_unsafe` warning (Miguel)

- FIELD_PREP_WM16() rework leftover (Nicolas)"

* tag 'bitmap-for-v6.18-rc2' of https://github.com/norov/linux:
PM / devfreq: rockchip-dfi: switch to FIELD_PREP_WM16 macro
rust: bitmap: clean Rust 1.92.0 `unused_unsafe` warning

+24 -23
+22 -23
drivers/devfreq/event/rockchip-dfi.c
··· 20 20 #include <linux/of.h> 21 21 #include <linux/of_device.h> 22 22 #include <linux/bitfield.h> 23 + #include <linux/hw_bitfield.h> 23 24 #include <linux/bits.h> 24 25 #include <linux/perf_event.h> 25 26 ··· 31 30 32 31 #define DMC_MAX_CHANNELS 4 33 32 34 - #define HIWORD_UPDATE(val, mask) ((val) | (mask) << 16) 35 - 36 33 /* DDRMON_CTRL */ 37 34 #define DDRMON_CTRL 0x04 38 35 #define DDRMON_CTRL_LPDDR5 BIT(6) ··· 40 41 #define DDRMON_CTRL_LPDDR23 BIT(2) 41 42 #define DDRMON_CTRL_SOFTWARE_EN BIT(1) 42 43 #define DDRMON_CTRL_TIMER_CNT_EN BIT(0) 43 - #define DDRMON_CTRL_DDR_TYPE_MASK (DDRMON_CTRL_LPDDR5 | \ 44 - DDRMON_CTRL_DDR4 | \ 45 - DDRMON_CTRL_LPDDR4 | \ 46 - DDRMON_CTRL_LPDDR23) 47 44 #define DDRMON_CTRL_LP5_BANK_MODE_MASK GENMASK(8, 7) 48 45 49 46 #define DDRMON_CH0_WR_NUM 0x20 ··· 119 124 unsigned int count_multiplier; /* number of data clocks per count */ 120 125 }; 121 126 122 - static int rockchip_dfi_ddrtype_to_ctrl(struct rockchip_dfi *dfi, u32 *ctrl, 123 - u32 *mask) 127 + static int rockchip_dfi_ddrtype_to_ctrl(struct rockchip_dfi *dfi, u32 *ctrl) 124 128 { 125 129 u32 ddrmon_ver; 126 - 127 - *mask = DDRMON_CTRL_DDR_TYPE_MASK; 128 130 129 131 switch (dfi->ddr_type) { 130 132 case ROCKCHIP_DDRTYPE_LPDDR2: 131 133 case ROCKCHIP_DDRTYPE_LPDDR3: 132 - *ctrl = DDRMON_CTRL_LPDDR23; 134 + *ctrl = FIELD_PREP_WM16(DDRMON_CTRL_LPDDR23, 1) | 135 + FIELD_PREP_WM16(DDRMON_CTRL_LPDDR4, 0) | 136 + FIELD_PREP_WM16(DDRMON_CTRL_LPDDR5, 0); 133 137 break; 134 138 case ROCKCHIP_DDRTYPE_LPDDR4: 135 139 case ROCKCHIP_DDRTYPE_LPDDR4X: 136 - *ctrl = DDRMON_CTRL_LPDDR4; 140 + *ctrl = FIELD_PREP_WM16(DDRMON_CTRL_LPDDR23, 0) | 141 + FIELD_PREP_WM16(DDRMON_CTRL_LPDDR4, 1) | 142 + FIELD_PREP_WM16(DDRMON_CTRL_LPDDR5, 0); 137 143 break; 138 144 case ROCKCHIP_DDRTYPE_LPDDR5: 139 145 ddrmon_ver = readl_relaxed(dfi->regs); 140 146 if (ddrmon_ver < 0x40) { 141 - *ctrl = DDRMON_CTRL_LPDDR5 | dfi->lp5_bank_mode; 142 - *mask |= DDRMON_CTRL_LP5_BANK_MODE_MASK; 147 + *ctrl = FIELD_PREP_WM16(DDRMON_CTRL_LPDDR23, 0) | 148 + FIELD_PREP_WM16(DDRMON_CTRL_LPDDR4, 0) | 149 + FIELD_PREP_WM16(DDRMON_CTRL_LPDDR5, 1) | 150 + FIELD_PREP_WM16(DDRMON_CTRL_LP5_BANK_MODE_MASK, 151 + dfi->lp5_bank_mode); 143 152 break; 144 153 } 145 154 ··· 171 172 void __iomem *dfi_regs = dfi->regs; 172 173 int i, ret = 0; 173 174 u32 ctrl; 174 - u32 ctrl_mask; 175 175 176 176 mutex_lock(&dfi->mutex); 177 177 ··· 184 186 goto out; 185 187 } 186 188 187 - ret = rockchip_dfi_ddrtype_to_ctrl(dfi, &ctrl, &ctrl_mask); 189 + ret = rockchip_dfi_ddrtype_to_ctrl(dfi, &ctrl); 188 190 if (ret) 189 191 goto out; 190 192 ··· 194 196 continue; 195 197 196 198 /* clear DDRMON_CTRL setting */ 197 - writel_relaxed(HIWORD_UPDATE(0, DDRMON_CTRL_TIMER_CNT_EN | 198 - DDRMON_CTRL_SOFTWARE_EN | DDRMON_CTRL_HARDWARE_EN), 199 + writel_relaxed(FIELD_PREP_WM16(DDRMON_CTRL_TIMER_CNT_EN, 0) | 200 + FIELD_PREP_WM16(DDRMON_CTRL_SOFTWARE_EN, 0) | 201 + FIELD_PREP_WM16(DDRMON_CTRL_HARDWARE_EN, 0), 199 202 dfi_regs + i * dfi->ddrmon_stride + DDRMON_CTRL); 200 203 201 - writel_relaxed(HIWORD_UPDATE(ctrl, ctrl_mask), 202 - dfi_regs + i * dfi->ddrmon_stride + DDRMON_CTRL); 204 + writel_relaxed(ctrl, dfi_regs + i * dfi->ddrmon_stride + 205 + DDRMON_CTRL); 203 206 204 207 /* enable count, use software mode */ 205 - writel_relaxed(HIWORD_UPDATE(DDRMON_CTRL_SOFTWARE_EN, DDRMON_CTRL_SOFTWARE_EN), 208 + writel_relaxed(FIELD_PREP_WM16(DDRMON_CTRL_SOFTWARE_EN, 1), 206 209 dfi_regs + i * dfi->ddrmon_stride + DDRMON_CTRL); 207 210 208 211 if (dfi->ddrmon_ctrl_single) ··· 233 234 if (!(dfi->channel_mask & BIT(i))) 234 235 continue; 235 236 236 - writel_relaxed(HIWORD_UPDATE(0, DDRMON_CTRL_SOFTWARE_EN), 237 - dfi_regs + i * dfi->ddrmon_stride + DDRMON_CTRL); 237 + writel_relaxed(FIELD_PREP_WM16(DDRMON_CTRL_SOFTWARE_EN, 0), 238 + dfi_regs + i * dfi->ddrmon_stride + DDRMON_CTRL); 238 239 239 240 if (dfi->ddrmon_ctrl_single) 240 241 break;
+2
rust/kernel/bitmap.rs
··· 166 166 fn deref(&self) -> &Bitmap { 167 167 let ptr = if self.nbits <= BITS_PER_LONG { 168 168 // SAFETY: Bitmap is represented inline. 169 + #[allow(unused_unsafe, reason = "Safe since Rust 1.92.0")] 169 170 unsafe { core::ptr::addr_of!(self.repr.bitmap) } 170 171 } else { 171 172 // SAFETY: Bitmap is represented as array of `unsigned long`. ··· 183 182 fn deref_mut(&mut self) -> &mut Bitmap { 184 183 let ptr = if self.nbits <= BITS_PER_LONG { 185 184 // SAFETY: Bitmap is represented inline. 185 + #[allow(unused_unsafe, reason = "Safe since Rust 1.92.0")] 186 186 unsafe { core::ptr::addr_of_mut!(self.repr.bitmap) } 187 187 } else { 188 188 // SAFETY: Bitmap is represented as array of `unsigned long`.