]> git.pld-linux.org Git - packages/kernel.git/blame - gcc13.patch
another gcc 13 backport prerequisite for previous one
[packages/kernel.git] / gcc13.patch
CommitLineData
ebb0ba2d
JP
1From e6a71160cc145e18ab45195abf89884112e02dfb Mon Sep 17 00:00:00 2001
2From: Kees Cook <keescook@chromium.org>
3Date: Wed, 18 Jan 2023 12:21:35 -0800
4Subject: gcc-plugins: Reorganize gimple includes for GCC 13
5
6The gimple-iterator.h header must be included before gimple-fold.h
7starting with GCC 13. Reorganize gimple headers to work for all GCC
8versions.
9
10Reported-by: Palmer Dabbelt <palmer@rivosinc.com>
11Acked-by: Palmer Dabbelt <palmer@rivosinc.com>
12Link: https://lore.kernel.org/all/20230113173033.4380-1-palmer@rivosinc.com/
13Cc: linux-hardening@vger.kernel.org
14Signed-off-by: Kees Cook <keescook@chromium.org>
15---
16 scripts/gcc-plugins/gcc-common.h | 4 ++--
17 1 file changed, 2 insertions(+), 2 deletions(-)
18
19diff --git a/scripts/gcc-plugins/gcc-common.h b/scripts/gcc-plugins/gcc-common.h
20index 9a1895747b153..84c730da36dd3 100644
21--- a/scripts/gcc-plugins/gcc-common.h
22+++ b/scripts/gcc-plugins/gcc-common.h
23@@ -71,7 +71,9 @@
24 #include "varasm.h"
25 #include "stor-layout.h"
26 #include "internal-fn.h"
27+#include "gimple.h"
28 #include "gimple-expr.h"
29+#include "gimple-iterator.h"
30 #include "gimple-fold.h"
31 #include "context.h"
32 #include "tree-ssa-alias.h"
33@@ -124,13 +126,10 @@
34 #include "gimplify.h"
35 #endif
36
37-#include "gimple.h"
38-
39 #if BUILDING_GCC_VERSION >= 4009
40 #include "tree-ssa-operands.h"
41 #include "tree-phinodes.h"
42 #include "tree-cfg.h"
43-#include "gimple-iterator.h"
44 #include "gimple-ssa.h"
45 #include "ssa-iterators.h"
46 #endif
47--
48cgit
49
50From f07788079f515ca4a681c5f595bdad19cfbd7b1d Mon Sep 17 00:00:00 2001
51From: Arnd Bergmann <arnd@arndb.de>
52Date: Sat, 3 Dec 2022 11:54:25 +0100
53Subject: ata: ahci: fix enum constants for gcc-13
54
55gcc-13 slightly changes the type of constant expressions that are defined
56in an enum, which triggers a compile time sanity check in libata:
57
58linux/drivers/ata/libahci.c: In function 'ahci_led_store':
59linux/include/linux/compiler_types.h:357:45: error: call to '__compiletime_assert_302' declared with attribute error: BUILD_BUG_ON failed: sizeof(_s) > sizeof(long)
60357 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
61
62The new behavior is that sizeof() returns the same value for the
63constant as it does for the enum type, which is generally more sensible
64and consistent.
65
66The problem in libata is that it contains a single enum definition for
67lots of unrelated constants, some of which are large positive (unsigned)
68integers like 0xffffffff, while others like (1<<31) are interpreted as
69negative integers, and this forces the enum type to become 64 bit wide
70even though most constants would still fit into a signed 32-bit 'int'.
71
72Fix this by changing the entire enum definition to use BIT(x) in place
73of (1<<x), which results in all values being seen as 'unsigned' and
74fitting into an unsigned 32-bit type.
75
76Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107917
77Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107405
78Reported-by: Luis Machado <luis.machado@arm.com>
79Cc: linux-ide@vger.kernel.org
80Cc: Damien Le Moal <damien.lemoal@opensource.wdc.com>
81Cc: stable@vger.kernel.org
82Cc: Randy Dunlap <rdunlap@infradead.org>
83Signed-off-by: Arnd Bergmann <arnd@arndb.de>
84Tested-by: Luis Machado <luis.machado@arm.com>
85Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
86---
87 drivers/ata/ahci.h | 245 +++++++++++++++++++++++++++--------------------------
88 1 file changed, 123 insertions(+), 122 deletions(-)
89
90(limited to 'drivers/ata')
91
92diff --git a/drivers/ata/ahci.h b/drivers/ata/ahci.h
93index da7ee8bec165a..4cec725cf30a2 100644
94--- a/drivers/ata/ahci.h
95+++ b/drivers/ata/ahci.h
96@@ -24,6 +24,7 @@
97 #include <linux/libata.h>
98 #include <linux/phy/phy.h>
99 #include <linux/regulator/consumer.h>
100+#include <linux/bits.h>
101
102 /* Enclosure Management Control */
103 #define EM_CTRL_MSG_TYPE 0x000f0000
104@@ -53,12 +54,12 @@ enum {
105 AHCI_PORT_PRIV_FBS_DMA_SZ = AHCI_CMD_SLOT_SZ +
106 AHCI_CMD_TBL_AR_SZ +
107 (AHCI_RX_FIS_SZ * 16),
108- AHCI_IRQ_ON_SG = (1 << 31),
109- AHCI_CMD_ATAPI = (1 << 5),
110- AHCI_CMD_WRITE = (1 << 6),
111- AHCI_CMD_PREFETCH = (1 << 7),
112- AHCI_CMD_RESET = (1 << 8),
113- AHCI_CMD_CLR_BUSY = (1 << 10),
114+ AHCI_IRQ_ON_SG = BIT(31),
115+ AHCI_CMD_ATAPI = BIT(5),
116+ AHCI_CMD_WRITE = BIT(6),
117+ AHCI_CMD_PREFETCH = BIT(7),
118+ AHCI_CMD_RESET = BIT(8),
119+ AHCI_CMD_CLR_BUSY = BIT(10),
120
121 RX_FIS_PIO_SETUP = 0x20, /* offset of PIO Setup FIS data */
122 RX_FIS_D2H_REG = 0x40, /* offset of D2H Register FIS data */
123@@ -76,37 +77,37 @@ enum {
124 HOST_CAP2 = 0x24, /* host capabilities, extended */
125
126 /* HOST_CTL bits */
127- HOST_RESET = (1 << 0), /* reset controller; self-clear */
128- HOST_IRQ_EN = (1 << 1), /* global IRQ enable */
129- HOST_MRSM = (1 << 2), /* MSI Revert to Single Message */
130- HOST_AHCI_EN = (1 << 31), /* AHCI enabled */
131+ HOST_RESET = BIT(0), /* reset controller; self-clear */
132+ HOST_IRQ_EN = BIT(1), /* global IRQ enable */
133+ HOST_MRSM = BIT(2), /* MSI Revert to Single Message */
134+ HOST_AHCI_EN = BIT(31), /* AHCI enabled */
135
136 /* HOST_CAP bits */
137- HOST_CAP_SXS = (1 << 5), /* Supports External SATA */
138- HOST_CAP_EMS = (1 << 6), /* Enclosure Management support */
139- HOST_CAP_CCC = (1 << 7), /* Command Completion Coalescing */
140- HOST_CAP_PART = (1 << 13), /* Partial state capable */
141- HOST_CAP_SSC = (1 << 14), /* Slumber state capable */
142- HOST_CAP_PIO_MULTI = (1 << 15), /* PIO multiple DRQ support */
143- HOST_CAP_FBS = (1 << 16), /* FIS-based switching support */
144- HOST_CAP_PMP = (1 << 17), /* Port Multiplier support */
145- HOST_CAP_ONLY = (1 << 18), /* Supports AHCI mode only */
146- HOST_CAP_CLO = (1 << 24), /* Command List Override support */
147- HOST_CAP_LED = (1 << 25), /* Supports activity LED */
148- HOST_CAP_ALPM = (1 << 26), /* Aggressive Link PM support */
149- HOST_CAP_SSS = (1 << 27), /* Staggered Spin-up */
150- HOST_CAP_MPS = (1 << 28), /* Mechanical presence switch */
151- HOST_CAP_SNTF = (1 << 29), /* SNotification register */
152- HOST_CAP_NCQ = (1 << 30), /* Native Command Queueing */
153- HOST_CAP_64 = (1 << 31), /* PCI DAC (64-bit DMA) support */
154+ HOST_CAP_SXS = BIT(5), /* Supports External SATA */
155+ HOST_CAP_EMS = BIT(6), /* Enclosure Management support */
156+ HOST_CAP_CCC = BIT(7), /* Command Completion Coalescing */
157+ HOST_CAP_PART = BIT(13), /* Partial state capable */
158+ HOST_CAP_SSC = BIT(14), /* Slumber state capable */
159+ HOST_CAP_PIO_MULTI = BIT(15), /* PIO multiple DRQ support */
160+ HOST_CAP_FBS = BIT(16), /* FIS-based switching support */
161+ HOST_CAP_PMP = BIT(17), /* Port Multiplier support */
162+ HOST_CAP_ONLY = BIT(18), /* Supports AHCI mode only */
163+ HOST_CAP_CLO = BIT(24), /* Command List Override support */
164+ HOST_CAP_LED = BIT(25), /* Supports activity LED */
165+ HOST_CAP_ALPM = BIT(26), /* Aggressive Link PM support */
166+ HOST_CAP_SSS = BIT(27), /* Staggered Spin-up */
167+ HOST_CAP_MPS = BIT(28), /* Mechanical presence switch */
168+ HOST_CAP_SNTF = BIT(29), /* SNotification register */
169+ HOST_CAP_NCQ = BIT(30), /* Native Command Queueing */
170+ HOST_CAP_64 = BIT(31), /* PCI DAC (64-bit DMA) support */
171
172 /* HOST_CAP2 bits */
173- HOST_CAP2_BOH = (1 << 0), /* BIOS/OS handoff supported */
174- HOST_CAP2_NVMHCI = (1 << 1), /* NVMHCI supported */
175- HOST_CAP2_APST = (1 << 2), /* Automatic partial to slumber */
176- HOST_CAP2_SDS = (1 << 3), /* Support device sleep */
177- HOST_CAP2_SADM = (1 << 4), /* Support aggressive DevSlp */
178- HOST_CAP2_DESO = (1 << 5), /* DevSlp from slumber only */
179+ HOST_CAP2_BOH = BIT(0), /* BIOS/OS handoff supported */
180+ HOST_CAP2_NVMHCI = BIT(1), /* NVMHCI supported */
181+ HOST_CAP2_APST = BIT(2), /* Automatic partial to slumber */
182+ HOST_CAP2_SDS = BIT(3), /* Support device sleep */
183+ HOST_CAP2_SADM = BIT(4), /* Support aggressive DevSlp */
184+ HOST_CAP2_DESO = BIT(5), /* DevSlp from slumber only */
185
186 /* registers for each SATA port */
187 PORT_LST_ADDR = 0x00, /* command list DMA addr */
188@@ -128,24 +129,24 @@ enum {
189 PORT_DEVSLP = 0x44, /* device sleep */
190
191 /* PORT_IRQ_{STAT,MASK} bits */
192- PORT_IRQ_COLD_PRES = (1 << 31), /* cold presence detect */
193- PORT_IRQ_TF_ERR = (1 << 30), /* task file error */
194- PORT_IRQ_HBUS_ERR = (1 << 29), /* host bus fatal error */
195- PORT_IRQ_HBUS_DATA_ERR = (1 << 28), /* host bus data error */
196- PORT_IRQ_IF_ERR = (1 << 27), /* interface fatal error */
197- PORT_IRQ_IF_NONFATAL = (1 << 26), /* interface non-fatal error */
198- PORT_IRQ_OVERFLOW = (1 << 24), /* xfer exhausted available S/G */
199- PORT_IRQ_BAD_PMP = (1 << 23), /* incorrect port multiplier */
200-
201- PORT_IRQ_PHYRDY = (1 << 22), /* PhyRdy changed */
202- PORT_IRQ_DEV_ILCK = (1 << 7), /* device interlock */
203- PORT_IRQ_CONNECT = (1 << 6), /* port connect change status */
204- PORT_IRQ_SG_DONE = (1 << 5), /* descriptor processed */
205- PORT_IRQ_UNK_FIS = (1 << 4), /* unknown FIS rx'd */
206- PORT_IRQ_SDB_FIS = (1 << 3), /* Set Device Bits FIS rx'd */
207- PORT_IRQ_DMAS_FIS = (1 << 2), /* DMA Setup FIS rx'd */
208- PORT_IRQ_PIOS_FIS = (1 << 1), /* PIO Setup FIS rx'd */
209- PORT_IRQ_D2H_REG_FIS = (1 << 0), /* D2H Register FIS rx'd */
210+ PORT_IRQ_COLD_PRES = BIT(31), /* cold presence detect */
211+ PORT_IRQ_TF_ERR = BIT(30), /* task file error */
212+ PORT_IRQ_HBUS_ERR = BIT(29), /* host bus fatal error */
213+ PORT_IRQ_HBUS_DATA_ERR = BIT(28), /* host bus data error */
214+ PORT_IRQ_IF_ERR = BIT(27), /* interface fatal error */
215+ PORT_IRQ_IF_NONFATAL = BIT(26), /* interface non-fatal error */
216+ PORT_IRQ_OVERFLOW = BIT(24), /* xfer exhausted available S/G */
217+ PORT_IRQ_BAD_PMP = BIT(23), /* incorrect port multiplier */
218+
219+ PORT_IRQ_PHYRDY = BIT(22), /* PhyRdy changed */
220+ PORT_IRQ_DEV_ILCK = BIT(7), /* device interlock */
221+ PORT_IRQ_CONNECT = BIT(6), /* port connect change status */
222+ PORT_IRQ_SG_DONE = BIT(5), /* descriptor processed */
223+ PORT_IRQ_UNK_FIS = BIT(4), /* unknown FIS rx'd */
224+ PORT_IRQ_SDB_FIS = BIT(3), /* Set Device Bits FIS rx'd */
225+ PORT_IRQ_DMAS_FIS = BIT(2), /* DMA Setup FIS rx'd */
226+ PORT_IRQ_PIOS_FIS = BIT(1), /* PIO Setup FIS rx'd */
227+ PORT_IRQ_D2H_REG_FIS = BIT(0), /* D2H Register FIS rx'd */
228
229 PORT_IRQ_FREEZE = PORT_IRQ_HBUS_ERR |
230 PORT_IRQ_IF_ERR |
231@@ -161,25 +162,25 @@ enum {
232 PORT_IRQ_PIOS_FIS | PORT_IRQ_D2H_REG_FIS,
233
234 /* PORT_CMD bits */
235- PORT_CMD_ASP = (1 << 27), /* Aggressive Slumber/Partial */
236- PORT_CMD_ALPE = (1 << 26), /* Aggressive Link PM enable */
237- PORT_CMD_ATAPI = (1 << 24), /* Device is ATAPI */
238- PORT_CMD_FBSCP = (1 << 22), /* FBS Capable Port */
239- PORT_CMD_ESP = (1 << 21), /* External Sata Port */
240- PORT_CMD_HPCP = (1 << 18), /* HotPlug Capable Port */
241- PORT_CMD_PMP = (1 << 17), /* PMP attached */
242- PORT_CMD_LIST_ON = (1 << 15), /* cmd list DMA engine running */
243- PORT_CMD_FIS_ON = (1 << 14), /* FIS DMA engine running */
244- PORT_CMD_FIS_RX = (1 << 4), /* Enable FIS receive DMA engine */
245- PORT_CMD_CLO = (1 << 3), /* Command list override */
246- PORT_CMD_POWER_ON = (1 << 2), /* Power up device */
247- PORT_CMD_SPIN_UP = (1 << 1), /* Spin up device */
248- PORT_CMD_START = (1 << 0), /* Enable port DMA engine */
249-
250- PORT_CMD_ICC_MASK = (0xf << 28), /* i/f ICC state mask */
251- PORT_CMD_ICC_ACTIVE = (0x1 << 28), /* Put i/f in active state */
252- PORT_CMD_ICC_PARTIAL = (0x2 << 28), /* Put i/f in partial state */
253- PORT_CMD_ICC_SLUMBER = (0x6 << 28), /* Put i/f in slumber state */
254+ PORT_CMD_ASP = BIT(27), /* Aggressive Slumber/Partial */
255+ PORT_CMD_ALPE = BIT(26), /* Aggressive Link PM enable */
256+ PORT_CMD_ATAPI = BIT(24), /* Device is ATAPI */
257+ PORT_CMD_FBSCP = BIT(22), /* FBS Capable Port */
258+ PORT_CMD_ESP = BIT(21), /* External Sata Port */
259+ PORT_CMD_HPCP = BIT(18), /* HotPlug Capable Port */
260+ PORT_CMD_PMP = BIT(17), /* PMP attached */
261+ PORT_CMD_LIST_ON = BIT(15), /* cmd list DMA engine running */
262+ PORT_CMD_FIS_ON = BIT(14), /* FIS DMA engine running */
263+ PORT_CMD_FIS_RX = BIT(4), /* Enable FIS receive DMA engine */
264+ PORT_CMD_CLO = BIT(3), /* Command list override */
265+ PORT_CMD_POWER_ON = BIT(2), /* Power up device */
266+ PORT_CMD_SPIN_UP = BIT(1), /* Spin up device */
267+ PORT_CMD_START = BIT(0), /* Enable port DMA engine */
268+
269+ PORT_CMD_ICC_MASK = (0xfu << 28), /* i/f ICC state mask */
270+ PORT_CMD_ICC_ACTIVE = (0x1u << 28), /* Put i/f in active state */
271+ PORT_CMD_ICC_PARTIAL = (0x2u << 28), /* Put i/f in partial state */
272+ PORT_CMD_ICC_SLUMBER = (0x6u << 28), /* Put i/f in slumber state */
273
274 /* PORT_FBS bits */
275 PORT_FBS_DWE_OFFSET = 16, /* FBS device with error offset */
276@@ -192,9 +193,9 @@ enum {
277 PORT_FBS_ADO_OFFSET = 12, /* FBS active dev optimization offset */
278 PORT_FBS_DEV_OFFSET = 8, /* FBS device to issue offset */
279 PORT_FBS_DEV_MASK = (0xf << PORT_FBS_DEV_OFFSET), /* FBS.DEV */
280- PORT_FBS_SDE = (1 << 2), /* FBS single device error */
281- PORT_FBS_DEC = (1 << 1), /* FBS device error clear */
282- PORT_FBS_EN = (1 << 0), /* Enable FBS */
283+ PORT_FBS_SDE = BIT(2), /* FBS single device error */
284+ PORT_FBS_DEC = BIT(1), /* FBS device error clear */
285+ PORT_FBS_EN = BIT(0), /* Enable FBS */
286
287 /* PORT_DEVSLP bits */
288 PORT_DEVSLP_DM_OFFSET = 25, /* DITO multiplier offset */
289@@ -202,52 +203,52 @@ enum {
290 PORT_DEVSLP_DITO_OFFSET = 15, /* DITO offset */
291 PORT_DEVSLP_MDAT_OFFSET = 10, /* Minimum assertion time */
292 PORT_DEVSLP_DETO_OFFSET = 2, /* DevSlp exit timeout */
293- PORT_DEVSLP_DSP = (1 << 1), /* DevSlp present */
294- PORT_DEVSLP_ADSE = (1 << 0), /* Aggressive DevSlp enable */
295+ PORT_DEVSLP_DSP = BIT(1), /* DevSlp present */
296+ PORT_DEVSLP_ADSE = BIT(0), /* Aggressive DevSlp enable */
297
298 /* hpriv->flags bits */
299
300 #define AHCI_HFLAGS(flags) .private_data = (void *)(flags)
301
302- AHCI_HFLAG_NO_NCQ = (1 << 0),
303- AHCI_HFLAG_IGN_IRQ_IF_ERR = (1 << 1), /* ignore IRQ_IF_ERR */
304- AHCI_HFLAG_IGN_SERR_INTERNAL = (1 << 2), /* ignore SERR_INTERNAL */
305- AHCI_HFLAG_32BIT_ONLY = (1 << 3), /* force 32bit */
306- AHCI_HFLAG_MV_PATA = (1 << 4), /* PATA port */
307- AHCI_HFLAG_NO_MSI = (1 << 5), /* no PCI MSI */
308- AHCI_HFLAG_NO_PMP = (1 << 6), /* no PMP */
309- AHCI_HFLAG_SECT255 = (1 << 8), /* max 255 sectors */
310- AHCI_HFLAG_YES_NCQ = (1 << 9), /* force NCQ cap on */
311- AHCI_HFLAG_NO_SUSPEND = (1 << 10), /* don't suspend */
312- AHCI_HFLAG_SRST_TOUT_IS_OFFLINE = (1 << 11), /* treat SRST timeout as
313- link offline */
314- AHCI_HFLAG_NO_SNTF = (1 << 12), /* no sntf */
315- AHCI_HFLAG_NO_FPDMA_AA = (1 << 13), /* no FPDMA AA */
316- AHCI_HFLAG_YES_FBS = (1 << 14), /* force FBS cap on */
317- AHCI_HFLAG_DELAY_ENGINE = (1 << 15), /* do not start engine on
318- port start (wait until
319- error-handling stage) */
320- AHCI_HFLAG_NO_DEVSLP = (1 << 17), /* no device sleep */
321- AHCI_HFLAG_NO_FBS = (1 << 18), /* no FBS */
322+ AHCI_HFLAG_NO_NCQ = BIT(0),
323+ AHCI_HFLAG_IGN_IRQ_IF_ERR = BIT(1), /* ignore IRQ_IF_ERR */
324+ AHCI_HFLAG_IGN_SERR_INTERNAL = BIT(2), /* ignore SERR_INTERNAL */
325+ AHCI_HFLAG_32BIT_ONLY = BIT(3), /* force 32bit */
326+ AHCI_HFLAG_MV_PATA = BIT(4), /* PATA port */
327+ AHCI_HFLAG_NO_MSI = BIT(5), /* no PCI MSI */
328+ AHCI_HFLAG_NO_PMP = BIT(6), /* no PMP */
329+ AHCI_HFLAG_SECT255 = BIT(8), /* max 255 sectors */
330+ AHCI_HFLAG_YES_NCQ = BIT(9), /* force NCQ cap on */
331+ AHCI_HFLAG_NO_SUSPEND = BIT(10), /* don't suspend */
332+ AHCI_HFLAG_SRST_TOUT_IS_OFFLINE = BIT(11), /* treat SRST timeout as
333+ link offline */
334+ AHCI_HFLAG_NO_SNTF = BIT(12), /* no sntf */
335+ AHCI_HFLAG_NO_FPDMA_AA = BIT(13), /* no FPDMA AA */
336+ AHCI_HFLAG_YES_FBS = BIT(14), /* force FBS cap on */
337+ AHCI_HFLAG_DELAY_ENGINE = BIT(15), /* do not start engine on
338+ port start (wait until
339+ error-handling stage) */
340+ AHCI_HFLAG_NO_DEVSLP = BIT(17), /* no device sleep */
341+ AHCI_HFLAG_NO_FBS = BIT(18), /* no FBS */
342
343 #ifdef CONFIG_PCI_MSI
344- AHCI_HFLAG_MULTI_MSI = (1 << 20), /* per-port MSI(-X) */
345+ AHCI_HFLAG_MULTI_MSI = BIT(20), /* per-port MSI(-X) */
346 #else
347 /* compile out MSI infrastructure */
348 AHCI_HFLAG_MULTI_MSI = 0,
349 #endif
350- AHCI_HFLAG_WAKE_BEFORE_STOP = (1 << 22), /* wake before DMA stop */
351- AHCI_HFLAG_YES_ALPM = (1 << 23), /* force ALPM cap on */
352- AHCI_HFLAG_NO_WRITE_TO_RO = (1 << 24), /* don't write to read
353- only registers */
354- AHCI_HFLAG_IS_MOBILE = (1 << 25), /* mobile chipset, use
355- SATA_MOBILE_LPM_POLICY
356- as default lpm_policy */
357- AHCI_HFLAG_SUSPEND_PHYS = (1 << 26), /* handle PHYs during
358- suspend/resume */
359- AHCI_HFLAG_IGN_NOTSUPP_POWER_ON = (1 << 27), /* ignore -EOPNOTSUPP
360- from phy_power_on() */
361- AHCI_HFLAG_NO_SXS = (1 << 28), /* SXS not supported */
362+ AHCI_HFLAG_WAKE_BEFORE_STOP = BIT(22), /* wake before DMA stop */
363+ AHCI_HFLAG_YES_ALPM = BIT(23), /* force ALPM cap on */
364+ AHCI_HFLAG_NO_WRITE_TO_RO = BIT(24), /* don't write to read
365+ only registers */
366+ AHCI_HFLAG_IS_MOBILE = BIT(25), /* mobile chipset, use
367+ SATA_MOBILE_LPM_POLICY
368+ as default lpm_policy */
369+ AHCI_HFLAG_SUSPEND_PHYS = BIT(26), /* handle PHYs during
370+ suspend/resume */
371+ AHCI_HFLAG_IGN_NOTSUPP_POWER_ON = BIT(27), /* ignore -EOPNOTSUPP
372+ from phy_power_on() */
373+ AHCI_HFLAG_NO_SXS = BIT(28), /* SXS not supported */
374
375 /* ap->flags bits */
376
377@@ -261,22 +262,22 @@ enum {
378 EM_MAX_RETRY = 5,
379
380 /* em_ctl bits */
381- EM_CTL_RST = (1 << 9), /* Reset */
382- EM_CTL_TM = (1 << 8), /* Transmit Message */
383- EM_CTL_MR = (1 << 0), /* Message Received */
384- EM_CTL_ALHD = (1 << 26), /* Activity LED */
385- EM_CTL_XMT = (1 << 25), /* Transmit Only */
386- EM_CTL_SMB = (1 << 24), /* Single Message Buffer */
387- EM_CTL_SGPIO = (1 << 19), /* SGPIO messages supported */
388- EM_CTL_SES = (1 << 18), /* SES-2 messages supported */
389- EM_CTL_SAFTE = (1 << 17), /* SAF-TE messages supported */
390- EM_CTL_LED = (1 << 16), /* LED messages supported */
391+ EM_CTL_RST = BIT(9), /* Reset */
392+ EM_CTL_TM = BIT(8), /* Transmit Message */
393+ EM_CTL_MR = BIT(0), /* Message Received */
394+ EM_CTL_ALHD = BIT(26), /* Activity LED */
395+ EM_CTL_XMT = BIT(25), /* Transmit Only */
396+ EM_CTL_SMB = BIT(24), /* Single Message Buffer */
397+ EM_CTL_SGPIO = BIT(19), /* SGPIO messages supported */
398+ EM_CTL_SES = BIT(18), /* SES-2 messages supported */
399+ EM_CTL_SAFTE = BIT(17), /* SAF-TE messages supported */
400+ EM_CTL_LED = BIT(16), /* LED messages supported */
401
402 /* em message type */
403- EM_MSG_TYPE_LED = (1 << 0), /* LED */
404- EM_MSG_TYPE_SAFTE = (1 << 1), /* SAF-TE */
405- EM_MSG_TYPE_SES2 = (1 << 2), /* SES-2 */
406- EM_MSG_TYPE_SGPIO = (1 << 3), /* SGPIO */
407+ EM_MSG_TYPE_LED = BIT(0), /* LED */
408+ EM_MSG_TYPE_SAFTE = BIT(1), /* SAF-TE */
409+ EM_MSG_TYPE_SES2 = BIT(2), /* SES-2 */
410+ EM_MSG_TYPE_SGPIO = BIT(3), /* SGPIO */
411 };
412
413 struct ahci_cmd_hdr {
414--
415cgit
416
417From 5a6b64adc18d9adfb497a529ff004d59b6df151f Mon Sep 17 00:00:00 2001
418From: Sam James <sam@gentoo.org>
419Date: Wed, 1 Feb 2023 23:00:09 +0000
420Subject: gcc-plugins: drop -std=gnu++11 to fix GCC 13 build
421
422The latest GCC 13 snapshot (13.0.1 20230129) gives the following:
423```
424cc1: error: cannot load plugin ./scripts/gcc-plugins/randomize_layout_plugin.so
425 :./scripts/gcc-plugins/randomize_layout_plugin.so: undefined symbol: tree_code_type
426```
427
428This ends up being because of https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=b0241ce6e37031
429upstream in GCC which changes the visibility of some types used by the kernel's
430plugin infrastructure like tree_code_type.
431
432After discussion with the GCC folks, we found that the kernel needs to be building
433plugins with the same flags used to build GCC - and GCC defaults to gnu++17
434right now. The minimum GCC version needed to build the kernel is GCC 5.1
435and GCC 5.1 already defaults to gnu++14 anyway, so just drop the flag, as
436all GCCs that could be used to build GCC already default to an acceptable
437version which was >= the version we forced via flags until now.
438
439Bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108634
440Signed-off-by: Sam James <sam@gentoo.org>
441Signed-off-by: Kees Cook <keescook@chromium.org>
442Link: https://lore.kernel.org/r/20230201230009.2252783-1-sam@gentoo.org
443---
444 scripts/gcc-plugins/Makefile | 2 +-
445 1 file changed, 1 insertion(+), 1 deletion(-)
446
447diff --git a/scripts/gcc-plugins/Makefile b/scripts/gcc-plugins/Makefile
448index b34d11e226366..320afd3cf8e82 100644
449--- a/scripts/gcc-plugins/Makefile
450+++ b/scripts/gcc-plugins/Makefile
451@@ -7,7 +7,7 @@
452 export HOST_EXTRACFLAGS
453 else
454 HOSTLIBS := hostcxxlibs
455- HOST_EXTRACXXFLAGS += -I$(GCC_PLUGINS_DIR)/include -I$(src) -std=gnu++98 -fno-rtti
456+ HOST_EXTRACXXFLAGS += -I$(GCC_PLUGINS_DIR)/include -I$(src) -fno-rtti
457 HOST_EXTRACXXFLAGS += -fno-exceptions -fasynchronous-unwind-tables -ggdb
458 HOST_EXTRACXXFLAGS += -Wno-narrowing -Wno-unused-variable
459 HOST_EXTRACXXFLAGS += -Wno-format-diag
460--
461cgit
462
1316e1b0
JP
463From ff1cc97b1f4c10db224f276d9615b22835b8c424 Mon Sep 17 00:00:00 2001
464From: "Jiri Slaby (SUSE)" <jirislaby@kernel.org>
465Date: Tue, 13 Dec 2022 13:08:26 +0100
466Subject: block/blk-iocost (gcc13): keep large values in a new enum
467
468Since gcc13, each member of an enum has the same type as the enum [1]. And
469that is inherited from its members. Provided:
470 VTIME_PER_SEC_SHIFT = 37,
471 VTIME_PER_SEC = 1LLU << VTIME_PER_SEC_SHIFT,
472 ...
473 AUTOP_CYCLE_NSEC = 10LLU * NSEC_PER_SEC,
474the named type is unsigned long.
475
476This generates warnings with gcc-13:
477 block/blk-iocost.c: In function 'ioc_weight_prfill':
478 block/blk-iocost.c:3037:37: error: format '%u' expects argument of type 'unsigned int', but argument 4 has type 'long unsigned int'
479
480 block/blk-iocost.c: In function 'ioc_weight_show':
481 block/blk-iocost.c:3047:34: error: format '%u' expects argument of type 'unsigned int', but argument 3 has type 'long unsigned int'
482
483So split the anonymous enum with large values to a separate enum, so
484that they don't affect other members.
485
486[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36113
487
488Cc: Martin Liska <mliska@suse.cz>
489Cc: Tejun Heo <tj@kernel.org>
490Cc: Josef Bacik <josef@toxicpanda.com>
491Cc: Jens Axboe <axboe@kernel.dk>
492Cc: cgroups@vger.kernel.org
493Cc: linux-block@vger.kernel.org
494Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
495Link: https://lore.kernel.org/r/20221213120826.17446-1-jirislaby@kernel.org
496Signed-off-by: Jens Axboe <axboe@kernel.dk>
497---
498 block/blk-iocost.c | 2 ++
499 1 file changed, 2 insertions(+)
500
501(limited to 'block/blk-iocost.c')
502
503diff --git a/block/blk-iocost.c b/block/blk-iocost.c
504index d1bdc12deaa70..549ddc9e0c6f4 100644
505--- a/block/blk-iocost.c
506+++ b/block/blk-iocost.c
507@@ -232,7 +232,9 @@ enum {
508
509 /* 1/64k is granular enough and can easily be handled w/ u32 */
510 HWEIGHT_WHOLE = 1 << 16,
511+};
512
513+enum {
514 /*
515 * As vtime is used to calculate the cost of each IO, it needs to
516 * be fairly high precision. For example, it should be able to
517--
518cgit
519
ee05efb3
JP
520From 5f2779dfa7b8cc7dfd4a1b6586d86e0d193266f3 Mon Sep 17 00:00:00 2001
521From: Arnd Bergmann <arnd@arndb.de>
522Date: Wed, 18 Jan 2023 09:07:01 +0100
523Subject: blk-iocost: avoid 64-bit division in ioc_timer_fn
524
525The behavior of 'enum' types has changed in gcc-13, so now the
526UNBUSY_THR_PCT constant is interpreted as a 64-bit number because
527it is defined as part of the same enum definition as some other
528constants that do not fit within a 32-bit integer. This in turn
529leads to some inefficient code on 32-bit architectures as well
530as a link error:
531
532arm-linux-gnueabi/bin/arm-linux-gnueabi-ld: block/blk-iocost.o: in function `ioc_timer_fn':
533blk-iocost.c:(.text+0x68e8): undefined reference to `__aeabi_uldivmod'
534arm-linux-gnueabi-ld: blk-iocost.c:(.text+0x6908): undefined reference to `__aeabi_uldivmod'
535
536Split the enum definition to keep the 64-bit timing constants in
537a separate enum type from those constants that can clearly fit
538within a smaller type.
539
540Signed-off-by: Arnd Bergmann <arnd@arndb.de>
541Acked-by: Tejun Heo <tj@kernel.org>
542Link: https://lore.kernel.org/r/20230118080706.3303186-1-arnd@kernel.org
543Signed-off-by: Jens Axboe <axboe@kernel.dk>
544---
545 block/blk-iocost.c | 8 +++++---
546 1 file changed, 5 insertions(+), 3 deletions(-)
547
548(limited to 'block')
549
550diff --git a/block/blk-iocost.c b/block/blk-iocost.c
551index 6955605629e4f..b691b6bb498f3 100644
552--- a/block/blk-iocost.c
553+++ b/block/blk-iocost.c
554@@ -258,6 +258,11 @@ enum {
555 VRATE_MIN = VTIME_PER_USEC * VRATE_MIN_PPM / MILLION,
556 VRATE_CLAMP_ADJ_PCT = 4,
557
558+ /* switch iff the conditions are met for longer than this */
559+ AUTOP_CYCLE_NSEC = 10LLU * NSEC_PER_SEC,
560+};
561+
562+enum {
563 /* if IOs end up waiting for requests, issue less */
564 RQ_WAIT_BUSY_PCT = 5,
565
566@@ -296,9 +301,6 @@ enum {
567 SURPLUS_SCALE_ABS = HWEIGHT_WHOLE / 50, /* + 2% */
568 SURPLUS_MIN_ADJ_DELTA = HWEIGHT_WHOLE / 33, /* 3% */
569
570- /* switch iff the conditions are met for longer than this */
571- AUTOP_CYCLE_NSEC = 10LLU * NSEC_PER_SEC,
572-
573 /*
574 * Count IO size in 4k pages. The 12bit shift helps keeping
575 * size-proportional components of cost calculation in closer
576--
577cgit
578
This page took 0.142388 seconds and 4 git commands to generate.