Merge 105a36f369
("Merge tag 'kbuild-fixes-v6.0-3' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild") into android-mainline
Steps on the way to 6.0-rc7 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: I20169becac3f8c5a89ca1ec26001277f545fe79e
This commit is contained in:
commit
d37c2966a2
@ -40,6 +40,7 @@ properties:
|
||||
patternProperties:
|
||||
'^opp-?[0-9]+$':
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
properties:
|
||||
opp-hz: true
|
||||
|
@ -19,6 +19,7 @@ properties:
|
||||
patternProperties:
|
||||
'^opp-?[0-9]+$':
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
properties:
|
||||
opp-level: true
|
||||
|
@ -5246,6 +5246,7 @@ F: block/blk-throttle.c
|
||||
F: include/linux/blk-cgroup.h
|
||||
|
||||
CONTROL GROUP - CPUSET
|
||||
M: Waiman Long <longman@redhat.com>
|
||||
M: Zefan Li <lizefan.x@bytedance.com>
|
||||
L: cgroups@vger.kernel.org
|
||||
S: Maintained
|
||||
|
@ -602,7 +602,6 @@ void del_gendisk(struct gendisk *disk)
|
||||
* Prevent new I/O from crossing bio_queue_enter().
|
||||
*/
|
||||
blk_queue_start_drain(q);
|
||||
blk_mq_freeze_queue_wait(q);
|
||||
|
||||
if (!(disk->flags & GENHD_FL_HIDDEN)) {
|
||||
sysfs_remove_link(&disk_to_dev(disk)->kobj, "bdi");
|
||||
@ -626,6 +625,8 @@ void del_gendisk(struct gendisk *disk)
|
||||
pm_runtime_set_memalloc_noio(disk_to_dev(disk), false);
|
||||
device_del(disk_to_dev(disk));
|
||||
|
||||
blk_mq_freeze_queue_wait(q);
|
||||
|
||||
blk_throtl_cancel_bios(disk->queue);
|
||||
|
||||
blk_sync_queue(q);
|
||||
|
@ -43,7 +43,7 @@ config SYSTEM_TRUSTED_KEYRING
|
||||
bool "Provide system-wide ring of trusted keys"
|
||||
depends on KEYS
|
||||
depends on ASYMMETRIC_KEY_TYPE
|
||||
depends on X509_CERTIFICATE_PARSER
|
||||
depends on X509_CERTIFICATE_PARSER = y
|
||||
help
|
||||
Provide a system keyring to which trusted keys can be added. Keys in
|
||||
the keyring are considered to be trusted. Keys may be added at will
|
||||
|
@ -449,6 +449,9 @@ static int quad8_events_configure(struct counter_device *counter)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* Enable IRQ line */
|
||||
irq_enabled |= BIT(event_node->channel);
|
||||
|
||||
/* Skip configuration if it is the same as previously set */
|
||||
if (priv->irq_trigger[event_node->channel] == next_irq_trigger)
|
||||
continue;
|
||||
@ -462,9 +465,6 @@ static int quad8_events_configure(struct counter_device *counter)
|
||||
priv->irq_trigger[event_node->channel] << 3;
|
||||
iowrite8(QUAD8_CTR_IOR | ior_cfg,
|
||||
&priv->reg->channel[event_node->channel].control);
|
||||
|
||||
/* Enable IRQ line */
|
||||
irq_enabled |= BIT(event_node->channel);
|
||||
}
|
||||
|
||||
iowrite8(irq_enabled, &priv->reg->index_interrupt);
|
||||
|
@ -148,10 +148,6 @@ static ssize_t flash_count_show(struct device *dev,
|
||||
stride = regmap_get_reg_stride(sec->m10bmc->regmap);
|
||||
num_bits = FLASH_COUNT_SIZE * 8;
|
||||
|
||||
flash_buf = kmalloc(FLASH_COUNT_SIZE, GFP_KERNEL);
|
||||
if (!flash_buf)
|
||||
return -ENOMEM;
|
||||
|
||||
if (FLASH_COUNT_SIZE % stride) {
|
||||
dev_err(sec->dev,
|
||||
"FLASH_COUNT_SIZE (0x%x) not aligned to stride (0x%x)\n",
|
||||
@ -160,6 +156,10 @@ static ssize_t flash_count_show(struct device *dev,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
flash_buf = kmalloc(FLASH_COUNT_SIZE, GFP_KERNEL);
|
||||
if (!flash_buf)
|
||||
return -ENOMEM;
|
||||
|
||||
ret = regmap_bulk_read(sec->m10bmc->regmap, STAGING_FLASH_COUNT,
|
||||
flash_buf, FLASH_COUNT_SIZE / stride);
|
||||
if (ret) {
|
||||
|
@ -873,7 +873,7 @@ int dev_pm_opp_config_clks_simple(struct device *dev,
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(dev_pm_opp_config_clks_simple);
|
||||
|
||||
|
@ -274,7 +274,6 @@ struct mvebu_a3700_comphy_lane {
|
||||
int submode;
|
||||
bool invert_tx;
|
||||
bool invert_rx;
|
||||
bool needs_reset;
|
||||
};
|
||||
|
||||
struct gbe_phy_init_data_fix {
|
||||
@ -1097,40 +1096,12 @@ mvebu_a3700_comphy_pcie_power_off(struct mvebu_a3700_comphy_lane *lane)
|
||||
0x0, PU_PLL_BIT | PU_RX_BIT | PU_TX_BIT);
|
||||
}
|
||||
|
||||
static int mvebu_a3700_comphy_reset(struct phy *phy)
|
||||
static void mvebu_a3700_comphy_usb3_power_off(struct mvebu_a3700_comphy_lane *lane)
|
||||
{
|
||||
struct mvebu_a3700_comphy_lane *lane = phy_get_drvdata(phy);
|
||||
u16 mask, data;
|
||||
|
||||
dev_dbg(lane->dev, "resetting lane %d\n", lane->id);
|
||||
|
||||
/* COMPHY reset for internal logic */
|
||||
comphy_lane_reg_set(lane, COMPHY_SFT_RESET,
|
||||
SFT_RST_NO_REG, SFT_RST_NO_REG);
|
||||
|
||||
/* COMPHY register reset (cleared automatically) */
|
||||
comphy_lane_reg_set(lane, COMPHY_SFT_RESET, SFT_RST, SFT_RST);
|
||||
|
||||
/* PIPE soft and register reset */
|
||||
data = PIPE_SOFT_RESET | PIPE_REG_RESET;
|
||||
mask = data;
|
||||
comphy_lane_reg_set(lane, COMPHY_PIPE_RST_CLK_CTRL, data, mask);
|
||||
|
||||
/* Release PIPE register reset */
|
||||
comphy_lane_reg_set(lane, COMPHY_PIPE_RST_CLK_CTRL,
|
||||
0x0, PIPE_REG_RESET);
|
||||
|
||||
/* Reset SB configuration register (only for lanes 0 and 1) */
|
||||
if (lane->id == 0 || lane->id == 1) {
|
||||
u32 mask, data;
|
||||
|
||||
data = PIN_RESET_CORE_BIT | PIN_RESET_COMPHY_BIT |
|
||||
PIN_PU_PLL_BIT | PIN_PU_RX_BIT | PIN_PU_TX_BIT;
|
||||
mask = data | PIN_PU_IVREF_BIT | PIN_TX_IDLE_BIT;
|
||||
comphy_periph_reg_set(lane, COMPHY_PHY_CFG1, data, mask);
|
||||
}
|
||||
|
||||
return 0;
|
||||
/*
|
||||
* The USB3 MAC sets the USB3 PHY to low state, so we do not
|
||||
* need to power off USB3 PHY again.
|
||||
*/
|
||||
}
|
||||
|
||||
static bool mvebu_a3700_comphy_check_mode(int lane,
|
||||
@ -1171,10 +1142,6 @@ static int mvebu_a3700_comphy_set_mode(struct phy *phy, enum phy_mode mode,
|
||||
(lane->mode != mode || lane->submode != submode))
|
||||
return -EBUSY;
|
||||
|
||||
/* If changing mode, ensure reset is called */
|
||||
if (lane->mode != PHY_MODE_INVALID && lane->mode != mode)
|
||||
lane->needs_reset = true;
|
||||
|
||||
/* Just remember the mode, ->power_on() will do the real setup */
|
||||
lane->mode = mode;
|
||||
lane->submode = submode;
|
||||
@ -1185,7 +1152,6 @@ static int mvebu_a3700_comphy_set_mode(struct phy *phy, enum phy_mode mode,
|
||||
static int mvebu_a3700_comphy_power_on(struct phy *phy)
|
||||
{
|
||||
struct mvebu_a3700_comphy_lane *lane = phy_get_drvdata(phy);
|
||||
int ret;
|
||||
|
||||
if (!mvebu_a3700_comphy_check_mode(lane->id, lane->mode,
|
||||
lane->submode)) {
|
||||
@ -1193,14 +1159,6 @@ static int mvebu_a3700_comphy_power_on(struct phy *phy)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (lane->needs_reset) {
|
||||
ret = mvebu_a3700_comphy_reset(phy);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
lane->needs_reset = false;
|
||||
}
|
||||
|
||||
switch (lane->mode) {
|
||||
case PHY_MODE_USB_HOST_SS:
|
||||
dev_dbg(lane->dev, "set lane %d to USB3 host mode\n", lane->id);
|
||||
@ -1224,38 +1182,28 @@ static int mvebu_a3700_comphy_power_off(struct phy *phy)
|
||||
{
|
||||
struct mvebu_a3700_comphy_lane *lane = phy_get_drvdata(phy);
|
||||
|
||||
switch (lane->mode) {
|
||||
case PHY_MODE_USB_HOST_SS:
|
||||
/*
|
||||
* The USB3 MAC sets the USB3 PHY to low state, so we do not
|
||||
* need to power off USB3 PHY again.
|
||||
*/
|
||||
break;
|
||||
|
||||
case PHY_MODE_SATA:
|
||||
mvebu_a3700_comphy_sata_power_off(lane);
|
||||
break;
|
||||
|
||||
case PHY_MODE_ETHERNET:
|
||||
switch (lane->id) {
|
||||
case 0:
|
||||
mvebu_a3700_comphy_usb3_power_off(lane);
|
||||
mvebu_a3700_comphy_ethernet_power_off(lane);
|
||||
break;
|
||||
|
||||
case PHY_MODE_PCIE:
|
||||
return 0;
|
||||
case 1:
|
||||
mvebu_a3700_comphy_pcie_power_off(lane);
|
||||
break;
|
||||
|
||||
mvebu_a3700_comphy_ethernet_power_off(lane);
|
||||
return 0;
|
||||
case 2:
|
||||
mvebu_a3700_comphy_usb3_power_off(lane);
|
||||
mvebu_a3700_comphy_sata_power_off(lane);
|
||||
return 0;
|
||||
default:
|
||||
dev_err(lane->dev, "invalid COMPHY mode\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct phy_ops mvebu_a3700_comphy_ops = {
|
||||
.power_on = mvebu_a3700_comphy_power_on,
|
||||
.power_off = mvebu_a3700_comphy_power_off,
|
||||
.reset = mvebu_a3700_comphy_reset,
|
||||
.set_mode = mvebu_a3700_comphy_set_mode,
|
||||
.owner = THIS_MODULE,
|
||||
};
|
||||
@ -1393,8 +1341,7 @@ static int mvebu_a3700_comphy_probe(struct platform_device *pdev)
|
||||
* To avoid relying on the bootloader/firmware configuration,
|
||||
* power off all comphys.
|
||||
*/
|
||||
mvebu_a3700_comphy_reset(phy);
|
||||
lane->needs_reset = false;
|
||||
mvebu_a3700_comphy_power_off(phy);
|
||||
}
|
||||
|
||||
provider = devm_of_phy_provider_register(&pdev->dev,
|
||||
|
@ -675,12 +675,12 @@ int dasd_alias_remove_device(struct dasd_device *device)
|
||||
struct dasd_device *dasd_alias_get_start_dev(struct dasd_device *base_device)
|
||||
{
|
||||
struct dasd_eckd_private *alias_priv, *private = base_device->private;
|
||||
struct alias_pav_group *group = private->pavgroup;
|
||||
struct alias_lcu *lcu = private->lcu;
|
||||
struct dasd_device *alias_device;
|
||||
struct alias_pav_group *group;
|
||||
unsigned long flags;
|
||||
|
||||
if (!group || !lcu)
|
||||
if (!lcu)
|
||||
return NULL;
|
||||
if (lcu->pav == NO_PAV ||
|
||||
lcu->flags & (NEED_UAC_UPDATE | UPDATE_PENDING))
|
||||
@ -697,6 +697,11 @@ struct dasd_device *dasd_alias_get_start_dev(struct dasd_device *base_device)
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&lcu->lock, flags);
|
||||
group = private->pavgroup;
|
||||
if (!group) {
|
||||
spin_unlock_irqrestore(&lcu->lock, flags);
|
||||
return NULL;
|
||||
}
|
||||
alias_device = group->next;
|
||||
if (!alias_device) {
|
||||
if (list_empty(&group->aliaslist)) {
|
||||
|
@ -984,6 +984,11 @@ static ssize_t assign_adapter_store(struct device *dev,
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (test_bit_inv(apid, matrix_mdev->matrix.apm)) {
|
||||
ret = count;
|
||||
goto done;
|
||||
}
|
||||
|
||||
set_bit_inv(apid, matrix_mdev->matrix.apm);
|
||||
|
||||
ret = vfio_ap_mdev_validate_masks(matrix_mdev);
|
||||
@ -1109,6 +1114,11 @@ static ssize_t unassign_adapter_store(struct device *dev,
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (!test_bit_inv(apid, matrix_mdev->matrix.apm)) {
|
||||
ret = count;
|
||||
goto done;
|
||||
}
|
||||
|
||||
clear_bit_inv((unsigned long)apid, matrix_mdev->matrix.apm);
|
||||
vfio_ap_mdev_hot_unplug_adapter(matrix_mdev, apid);
|
||||
ret = count;
|
||||
@ -1183,6 +1193,11 @@ static ssize_t assign_domain_store(struct device *dev,
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (test_bit_inv(apqi, matrix_mdev->matrix.aqm)) {
|
||||
ret = count;
|
||||
goto done;
|
||||
}
|
||||
|
||||
set_bit_inv(apqi, matrix_mdev->matrix.aqm);
|
||||
|
||||
ret = vfio_ap_mdev_validate_masks(matrix_mdev);
|
||||
@ -1286,6 +1301,11 @@ static ssize_t unassign_domain_store(struct device *dev,
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (!test_bit_inv(apqi, matrix_mdev->matrix.aqm)) {
|
||||
ret = count;
|
||||
goto done;
|
||||
}
|
||||
|
||||
clear_bit_inv((unsigned long)apqi, matrix_mdev->matrix.aqm);
|
||||
vfio_ap_mdev_hot_unplug_domain(matrix_mdev, apqi);
|
||||
ret = count;
|
||||
@ -1329,6 +1349,11 @@ static ssize_t assign_control_domain_store(struct device *dev,
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (test_bit_inv(id, matrix_mdev->matrix.adm)) {
|
||||
ret = count;
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* Set the bit in the ADM (bitmask) corresponding to the AP control
|
||||
* domain number (id). The bits in the mask, from most significant to
|
||||
* least significant, correspond to IDs 0 up to the one less than the
|
||||
@ -1378,6 +1403,11 @@ static ssize_t unassign_control_domain_store(struct device *dev,
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (!test_bit_inv(domid, matrix_mdev->matrix.adm)) {
|
||||
ret = count;
|
||||
goto done;
|
||||
}
|
||||
|
||||
clear_bit_inv(domid, matrix_mdev->matrix.adm);
|
||||
|
||||
if (test_bit_inv(domid, matrix_mdev->shadow_apcb.adm)) {
|
||||
|
@ -1334,6 +1334,7 @@ static int omap8250_probe(struct platform_device *pdev)
|
||||
up.port.throttle = omap_8250_throttle;
|
||||
up.port.unthrottle = omap_8250_unthrottle;
|
||||
up.port.rs485_config = serial8250_em485_config;
|
||||
up.port.rs485_supported = serial8250_em485_supported;
|
||||
up.rs485_start_tx = serial8250_em485_start_tx;
|
||||
up.rs485_stop_tx = serial8250_em485_stop_tx;
|
||||
up.port.has_sysrq = IS_ENABLED(CONFIG_SERIAL_8250_CONSOLE);
|
||||
|
@ -2724,14 +2724,15 @@ static int lpuart_probe(struct platform_device *pdev)
|
||||
lpuart_reg.cons = LPUART_CONSOLE;
|
||||
handler = lpuart_int;
|
||||
}
|
||||
ret = uart_add_one_port(&lpuart_reg, &sport->port);
|
||||
if (ret)
|
||||
goto failed_attach_port;
|
||||
|
||||
ret = lpuart_global_reset(sport);
|
||||
if (ret)
|
||||
goto failed_reset;
|
||||
|
||||
ret = uart_add_one_port(&lpuart_reg, &sport->port);
|
||||
if (ret)
|
||||
goto failed_attach_port;
|
||||
|
||||
ret = uart_get_rs485_mode(&sport->port);
|
||||
if (ret)
|
||||
goto failed_get_rs485;
|
||||
@ -2747,9 +2748,9 @@ static int lpuart_probe(struct platform_device *pdev)
|
||||
|
||||
failed_irq_request:
|
||||
failed_get_rs485:
|
||||
failed_reset:
|
||||
uart_remove_one_port(&lpuart_reg, &sport->port);
|
||||
failed_attach_port:
|
||||
failed_reset:
|
||||
lpuart_disable_clks(sport);
|
||||
return ret;
|
||||
}
|
||||
|
@ -525,7 +525,7 @@ static void tegra_uart_tx_dma_complete(void *args)
|
||||
count = tup->tx_bytes_requested - state.residue;
|
||||
async_tx_ack(tup->tx_dma_desc);
|
||||
spin_lock_irqsave(&tup->uport.lock, flags);
|
||||
xmit->tail = (xmit->tail + count) & (UART_XMIT_SIZE - 1);
|
||||
uart_xmit_advance(&tup->uport, count);
|
||||
tup->tx_in_progress = 0;
|
||||
if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS)
|
||||
uart_write_wakeup(&tup->uport);
|
||||
@ -613,7 +613,6 @@ static unsigned int tegra_uart_tx_empty(struct uart_port *u)
|
||||
static void tegra_uart_stop_tx(struct uart_port *u)
|
||||
{
|
||||
struct tegra_uart_port *tup = to_tegra_uport(u);
|
||||
struct circ_buf *xmit = &tup->uport.state->xmit;
|
||||
struct dma_tx_state state;
|
||||
unsigned int count;
|
||||
|
||||
@ -624,7 +623,7 @@ static void tegra_uart_stop_tx(struct uart_port *u)
|
||||
dmaengine_tx_status(tup->tx_dma_chan, tup->tx_cookie, &state);
|
||||
count = tup->tx_bytes_requested - state.residue;
|
||||
async_tx_ack(tup->tx_dma_desc);
|
||||
xmit->tail = (xmit->tail + count) & (UART_XMIT_SIZE - 1);
|
||||
uart_xmit_advance(&tup->uport, count);
|
||||
tup->tx_in_progress = 0;
|
||||
}
|
||||
|
||||
|
@ -945,7 +945,7 @@ static int sifive_serial_probe(struct platform_device *pdev)
|
||||
return PTR_ERR(base);
|
||||
}
|
||||
|
||||
clk = devm_clk_get(&pdev->dev, NULL);
|
||||
clk = devm_clk_get_enabled(&pdev->dev, NULL);
|
||||
if (IS_ERR(clk)) {
|
||||
dev_err(&pdev->dev, "unable to find controller clock\n");
|
||||
return PTR_ERR(clk);
|
||||
|
@ -101,7 +101,7 @@ static void tegra_tcu_uart_start_tx(struct uart_port *port)
|
||||
break;
|
||||
|
||||
tegra_tcu_write(tcu, &xmit->buf[xmit->tail], count);
|
||||
xmit->tail = (xmit->tail + count) & (UART_XMIT_SIZE - 1);
|
||||
uart_xmit_advance(port, count);
|
||||
}
|
||||
|
||||
uart_write_wakeup(port);
|
||||
|
@ -624,6 +624,23 @@ struct uart_state {
|
||||
/* number of characters left in xmit buffer before we ask for more */
|
||||
#define WAKEUP_CHARS 256
|
||||
|
||||
/**
|
||||
* uart_xmit_advance - Advance xmit buffer and account Tx'ed chars
|
||||
* @up: uart_port structure describing the port
|
||||
* @chars: number of characters sent
|
||||
*
|
||||
* This function advances the tail of circular xmit buffer by the number of
|
||||
* @chars transmitted and handles accounting of transmitted bytes (into
|
||||
* @up's icount.tx).
|
||||
*/
|
||||
static inline void uart_xmit_advance(struct uart_port *up, unsigned int chars)
|
||||
{
|
||||
struct circ_buf *xmit = &up->state->xmit;
|
||||
|
||||
xmit->tail = (xmit->tail + chars) & (UART_XMIT_SIZE - 1);
|
||||
up->icount.tx += chars;
|
||||
}
|
||||
|
||||
struct module;
|
||||
struct tty_driver;
|
||||
|
||||
|
@ -2648,6 +2648,9 @@ static __cold void io_ring_ctx_wait_and_kill(struct io_ring_ctx *ctx)
|
||||
io_kill_timeouts(ctx, NULL, true);
|
||||
/* if we failed setting up the ctx, we might not have any rings */
|
||||
io_iopoll_try_reap_events(ctx);
|
||||
/* drop cached put refs after potentially doing completions */
|
||||
if (current->io_uring)
|
||||
io_uring_drop_tctx_refs(current);
|
||||
}
|
||||
|
||||
INIT_WORK(&ctx->exit_work, io_ring_exit_work);
|
||||
|
@ -6056,6 +6056,9 @@ struct cgroup *cgroup_get_from_id(u64 id)
|
||||
if (!kn)
|
||||
goto out;
|
||||
|
||||
if (kernfs_type(kn) != KERNFS_DIR)
|
||||
goto put;
|
||||
|
||||
rcu_read_lock();
|
||||
|
||||
cgrp = rcu_dereference(*(void __rcu __force **)&kn->priv);
|
||||
@ -6063,7 +6066,7 @@ struct cgroup *cgroup_get_from_id(u64 id)
|
||||
cgrp = NULL;
|
||||
|
||||
rcu_read_unlock();
|
||||
|
||||
put:
|
||||
kernfs_put(kn);
|
||||
out:
|
||||
return cgrp;
|
||||
|
@ -3070,10 +3070,8 @@ static bool __flush_work(struct work_struct *work, bool from_cancel)
|
||||
if (WARN_ON(!work->func))
|
||||
return false;
|
||||
|
||||
if (!from_cancel) {
|
||||
lock_map_acquire(&work->lockdep_map);
|
||||
lock_map_release(&work->lockdep_map);
|
||||
}
|
||||
lock_map_acquire(&work->lockdep_map);
|
||||
lock_map_release(&work->lockdep_map);
|
||||
|
||||
if (start_flush_work(work, &barr, from_cancel)) {
|
||||
wait_for_completion(&barr.done);
|
||||
|
@ -264,8 +264,10 @@ config DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT
|
||||
config DEBUG_INFO_DWARF4
|
||||
bool "Generate DWARF Version 4 debuginfo"
|
||||
select DEBUG_INFO
|
||||
depends on !CC_IS_CLANG || (CC_IS_CLANG && (AS_IS_LLVM || (AS_IS_GNU && AS_VERSION >= 23502)))
|
||||
help
|
||||
Generate DWARF v4 debug info. This requires gcc 4.5+ and gdb 7.0+.
|
||||
Generate DWARF v4 debug info. This requires gcc 4.5+, binutils 2.35.2
|
||||
if using clang without clang's integrated assembler, and gdb 7.0+.
|
||||
|
||||
If you have consumers of DWARF debug info that are not ready for
|
||||
newer revisions of DWARF, you may wish to choose this or have your
|
||||
|
@ -1,20 +1,19 @@
|
||||
DEBUG_CFLAGS :=
|
||||
debug-flags-y := -g
|
||||
|
||||
ifdef CONFIG_DEBUG_INFO_SPLIT
|
||||
DEBUG_CFLAGS += -gsplit-dwarf
|
||||
else
|
||||
DEBUG_CFLAGS += -g
|
||||
endif
|
||||
|
||||
ifndef CONFIG_AS_IS_LLVM
|
||||
KBUILD_AFLAGS += -Wa,-gdwarf-2
|
||||
endif
|
||||
|
||||
ifndef CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT
|
||||
dwarf-version-$(CONFIG_DEBUG_INFO_DWARF4) := 4
|
||||
dwarf-version-$(CONFIG_DEBUG_INFO_DWARF5) := 5
|
||||
DEBUG_CFLAGS += -gdwarf-$(dwarf-version-y)
|
||||
debug-flags-$(CONFIG_DEBUG_INFO_DWARF4) += -gdwarf-4
|
||||
debug-flags-$(CONFIG_DEBUG_INFO_DWARF5) += -gdwarf-5
|
||||
ifeq ($(CONFIG_CC_IS_CLANG)$(CONFIG_AS_IS_GNU),yy)
|
||||
# Clang does not pass -g or -gdwarf-* option down to GAS.
|
||||
# Add -Wa, prefix to explicitly specify the flags.
|
||||
KBUILD_AFLAGS += $(addprefix -Wa$(comma), $(debug-flags-y))
|
||||
endif
|
||||
DEBUG_CFLAGS += $(debug-flags-y)
|
||||
KBUILD_AFLAGS += $(debug-flags-y)
|
||||
|
||||
ifdef CONFIG_DEBUG_INFO_REDUCED
|
||||
DEBUG_CFLAGS += -fno-var-tracking
|
||||
@ -29,5 +28,5 @@ KBUILD_AFLAGS += -gz=zlib
|
||||
KBUILD_LDFLAGS += --compress-debug-sections=zlib
|
||||
endif
|
||||
|
||||
KBUILD_CFLAGS += $(DEBUG_CFLAGS)
|
||||
KBUILD_CFLAGS += $(DEBUG_CFLAGS)
|
||||
export DEBUG_CFLAGS
|
||||
|
@ -12,7 +12,6 @@ compile_commands.json.
|
||||
import argparse
|
||||
import json
|
||||
import multiprocessing
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
|
@ -98,7 +98,6 @@ bool menu_is_empty(struct menu *menu);
|
||||
bool menu_is_visible(struct menu *menu);
|
||||
bool menu_has_prompt(struct menu *menu);
|
||||
const char *menu_get_prompt(struct menu *menu);
|
||||
struct menu *menu_get_root_menu(struct menu *menu);
|
||||
struct menu *menu_get_parent_menu(struct menu *menu);
|
||||
bool menu_has_help(struct menu *menu);
|
||||
const char *menu_get_help(struct menu *menu);
|
||||
|
@ -661,11 +661,6 @@ const char *menu_get_prompt(struct menu *menu)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct menu *menu_get_root_menu(struct menu *menu)
|
||||
{
|
||||
return &rootmenu;
|
||||
}
|
||||
|
||||
struct menu *menu_get_parent_menu(struct menu *menu)
|
||||
{
|
||||
enum prop_type type;
|
||||
|
Loading…
Reference in New Issue
Block a user