Unverified Commit 247e5bd9 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!15248 [openEuler-24.03-LTS][linux-6.6.y sync] Backport 6.6.64-6.6.66 LTS Conflicts Patches

Merge Pull Request from: @cuiyudong123 
 
Submit after modification(6):
KVM: arm64: Change kvm_handle_mmio_return() return polarity
gpio: grgpio: use a helper variable to store the address of ofdev->dev
iommu/arm-smmu: Defer probe of clients after smmu device bound
bpf: Remove unnecessary kfree(im_node) in lpm_trie_update_elem
mm/mempolicy: fix migrate_to_node() assuming there is at least one VMA in a MM
selftests/ftrace: adjust offset for kprobe syntax error test

本pr遗留commit:
Conflicts(2):
sched/numa: Fix mm numa_scan_seq based unconditional scan
mempolicy: fix migrate_pages(2) syscall return nr_failed

check config error(3):
zram: clear IDLE flag in mark_idle()
zram: do not mark idle slots that cannot be idle
zram: split memory-tracking and ac-time tracking

check kabi error(14):
ALSA: hda/conexant: Use the new codec SSID matching
ALSA: hda: Use own quirk lookup helper
ALSA: hda: Fix build error without CONFIG_SND_DEBUG
sched/deadline: Move bandwidth accounting into {en,de}queue_dl_entity
sched/deadline: Collect sched_dl_entity initialization
sched: Unify more update_curr*()
sched: Remove vruntime from trace_sched_stat_runtime()
sched: Unify runtime accounting across classes
sched/headers: Move 'struct sched_param' out of uapi, to work around glibc/musl breakage
sched/fair: Rename check_preempt_curr() to wakeup_preempt()
sched/fair: Rename check_preempt_wakeup() to check_preempt_wakeup_fair()
sched/core: Prevent wakeup of ksoftirqd during idle load balance
sched/fair: Check idle_cpu() before need_resched() to detect ilb CPU turning busy
sched/core: Remove the unnecessary need_resched() check in nohz_csd_func() 
 
Link:https://gitee.com/openeuler/kernel/pulls/15248

 

Reviewed-by: default avatarKefeng Wang <wangkefeng.wang@huawei.com>
Reviewed-by: default avatarXu Kuohai <xukuohai@huawei.com>
Signed-off-by: default avatarZhang Peng <zhangpeng362@huawei.com>
parents dfc7e145 d472799f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1108,7 +1108,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu)

	if (run->exit_reason == KVM_EXIT_MMIO) {
		ret = kvm_handle_mmio_return(vcpu);
		if (ret)
		if (ret <= 0)
			return ret;
	}

+2 −2
Original line number Diff line number Diff line
@@ -115,7 +115,7 @@ int kvm_handle_mmio_return(struct kvm_vcpu *vcpu)
	 * the MMIO access.
	 */
	if (unlikely(!vcpu->mmio_needed || kvm_pending_sync_exception(vcpu)))
		return 0;
		return 1;

	vcpu->mmio_needed = 0;

@@ -152,7 +152,7 @@ int kvm_handle_mmio_return(struct kvm_vcpu *vcpu)
	 */
	kvm_incr_pc(vcpu);

	return 0;
	return 1;
}

int io_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa)
+12 −11
Original line number Diff line number Diff line
@@ -328,6 +328,7 @@ static const struct irq_domain_ops grgpio_irq_domain_ops = {
static int grgpio_probe(struct platform_device *ofdev)
{
	struct device_node *np = ofdev->dev.of_node;
	struct device *dev = &ofdev->dev;
	void  __iomem *regs;
	struct gpio_chip *gc;
	struct grgpio_priv *priv;
@@ -337,7 +338,7 @@ static int grgpio_probe(struct platform_device *ofdev)
	int size;
	int i;

	priv = devm_kzalloc(&ofdev->dev, sizeof(*priv), GFP_KERNEL);
	priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
	if (!priv)
		return -ENOMEM;

@@ -346,21 +347,21 @@ static int grgpio_probe(struct platform_device *ofdev)
		return PTR_ERR(regs);

	gc = &priv->gc;
	err = bgpio_init(gc, &ofdev->dev, 4, regs + GRGPIO_DATA,
	err = bgpio_init(gc, dev, 4, regs + GRGPIO_DATA,
			 regs + GRGPIO_OUTPUT, NULL, regs + GRGPIO_DIR, NULL,
			 BGPIOF_BIG_ENDIAN_BYTE_ORDER);
	if (err) {
		dev_err(&ofdev->dev, "bgpio_init() failed\n");
		dev_err(dev, "bgpio_init() failed\n");
		return err;
	}

	priv->regs = regs;
	priv->imask = gc->read_reg(regs + GRGPIO_IMASK);
	priv->dev = &ofdev->dev;
	priv->dev = dev;

	gc->owner = THIS_MODULE;
	gc->to_irq = grgpio_to_irq;
	gc->label = devm_kasprintf(&ofdev->dev, GFP_KERNEL, "%pOF", np);
	gc->label = devm_kasprintf(dev, GFP_KERNEL, "%pOF", np);
	if (!gc->label)
		return -ENOMEM;

@@ -369,8 +370,8 @@ static int grgpio_probe(struct platform_device *ofdev)
	err = of_property_read_u32(np, "nbits", &prop);
	if (err || prop <= 0 || prop > GRGPIO_MAX_NGPIO) {
		gc->ngpio = GRGPIO_MAX_NGPIO;
		dev_dbg(&ofdev->dev,
			"No or invalid nbits property: assume %d\n", gc->ngpio);
		dev_dbg(dev, "No or invalid nbits property: assume %d\n",
			gc->ngpio);
	} else {
		gc->ngpio = prop;
	}
@@ -382,7 +383,7 @@ static int grgpio_probe(struct platform_device *ofdev)
	irqmap = (s32 *)of_get_property(np, "irqmap", &size);
	if (irqmap) {
		if (size < gc->ngpio) {
			dev_err(&ofdev->dev,
			dev_err(dev,
				"irqmap shorter than ngpio (%d < %d)\n",
				size, gc->ngpio);
			return -EINVAL;
@@ -392,7 +393,7 @@ static int grgpio_probe(struct platform_device *ofdev)
						     &grgpio_irq_domain_ops,
						     priv);
		if (!priv->domain) {
			dev_err(&ofdev->dev, "Could not add irq domain\n");
			dev_err(dev, "Could not add irq domain\n");
			return -EINVAL;
		}

@@ -422,13 +423,13 @@ static int grgpio_probe(struct platform_device *ofdev)

	err = gpiochip_add_data(gc, priv);
	if (err) {
		dev_err(&ofdev->dev, "Could not add gpiochip\n");
		dev_err(dev, "Could not add gpiochip\n");
		if (priv->domain)
			irq_domain_remove(priv->domain);
		return err;
	}

	dev_info(&ofdev->dev, "regs=0x%p, base=%d, ngpio=%d, irqs=%s\n",
	dev_info(dev, "regs=0x%p, base=%d, ngpio=%d, irqs=%s\n",
		 priv->regs, gc->base, gc->ngpio, priv->domain ? "on" : "off");

	return 0;
+11 −0
Original line number Diff line number Diff line
@@ -1399,6 +1399,17 @@ static struct iommu_device *arm_smmu_probe_device(struct device *dev)
			goto out_free;
	} else {
		smmu = arm_smmu_get_by_fwnode(fwspec->iommu_fwnode);

		/*
		 * Defer probe if the relevant SMMU instance hasn't finished
		 * probing yet. This is a fragile hack and we'd ideally
		 * avoid this race in the core code. Until that's ironed
		 * out, however, this is the most pragmatic option on the
		 * table.
		 */
		if (!smmu)
			return ERR_PTR(dev_err_probe(dev, -EPROBE_DEFER,
						"smmu dev has not bound yet\n"));
	}

#ifdef CONFIG_ARCH_PHYTIUM
+2 −5
Original line number Diff line number Diff line
@@ -317,7 +317,7 @@ static long trie_update_elem(struct bpf_map *map,
			     void *_key, void *value, u64 flags)
{
	struct lpm_trie *trie = container_of(map, struct lpm_trie, map);
	struct lpm_trie_node *node, *im_node = NULL, *new_node = NULL;
	struct lpm_trie_node *node, *im_node, *new_node = NULL;
	struct lpm_trie_node *free_node = NULL;
	struct lpm_trie_node __rcu **slot;
	struct bpf_lpm_trie_key_u8 *key = _key;
@@ -440,11 +440,8 @@ static long trie_update_elem(struct bpf_map *map,
	rcu_assign_pointer(*slot, im_node);

out:
	if (ret) {
	if (ret)
		kfree(new_node);
		kfree(im_node);
	}

	spin_unlock_irqrestore(&trie->lock, irq_flags);
	kfree_rcu(free_node, rcu);

Loading