Skip to content

Commit

Permalink
Merge tag 'xtensa-20210902' of git://github.com/jcmvbkbc/linux-xtensa
Browse files Browse the repository at this point in the history
Pull Xtensa updates from Max Filippov:

 - fix kconfig unmet dependency warning for HAVE_FUTEX_CMPXCHG

 - add fairness to handling IRQs of the same priority

 - fix pointer usage before NULL check in ISS console driver

 - build system cleanups

* tag 'xtensa-20210902' of git://github.com/jcmvbkbc/linux-xtensa:
  xtensa: move core-y in arch/xtensa/Makefile to arch/xtensa/Kbuild
  xtensa: build platform directories unconditionally
  xtensa: do not build variants directory
  xtensa: remove unneeded exports
  xtensa: ISS: don't use string pointer before NULL check
  xtensa: add fairness to IRQ handling
  xtensa: fix kconfig unmet dependency warning for HAVE_FUTEX_CMPXCHG
  • Loading branch information
torvalds committed Sep 2, 2021
2 parents aa82977 + 7b7cec4 commit b5d6d26
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 16 deletions.
1 change: 1 addition & 0 deletions arch/xtensa/Kbuild
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
# SPDX-License-Identifier: GPL-2.0-only
obj-y += kernel/ mm/ platforms/ boot/dts/
2 changes: 1 addition & 1 deletion arch/xtensa/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ config XTENSA
select HAVE_DMA_CONTIGUOUS
select HAVE_EXIT_THREAD
select HAVE_FUNCTION_TRACER
select HAVE_FUTEX_CMPXCHG if !MMU
select HAVE_FUTEX_CMPXCHG if !MMU && FUTEX
select HAVE_HW_BREAKPOINT if PERF_EVENTS
select HAVE_IRQ_TIME_ACCOUNTING
select HAVE_PCI
Expand Down
12 changes: 0 additions & 12 deletions arch/xtensa/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
variant-y := $(patsubst "%",%,$(CONFIG_XTENSA_VARIANT_NAME))

VARIANT = $(variant-y)
export VARIANT

ifneq ($(VARIANT),)
ifdef cross_compiling
Expand All @@ -33,9 +32,6 @@ platform-$(CONFIG_XTENSA_PLATFORM_XT2000) := xt2000
platform-$(CONFIG_XTENSA_PLATFORM_ISS) := iss
platform-$(CONFIG_XTENSA_PLATFORM_XTFPGA) := xtfpga

PLATFORM = $(platform-y)
export PLATFORM

# temporarily until string.h is fixed
KBUILD_CFLAGS += -ffreestanding -D__linux__
KBUILD_CFLAGS += -pipe -mlongcalls -mtext-section-literals
Expand All @@ -57,19 +53,11 @@ KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%include,$(vardirs) $(plfdirs))

KBUILD_DEFCONFIG := iss_defconfig

# Only build variant and/or platform if it includes a Makefile

buildvar := $(shell test -e $(srctree)/arch/xtensa/variants/$(VARIANT)/Makefile && echo arch/xtensa/variants/$(VARIANT)/)
buildplf := $(shell test -e $(srctree)/arch/xtensa/platforms/$(PLATFORM)/Makefile && echo arch/xtensa/platforms/$(PLATFORM)/)

# Find libgcc.a

LIBGCC := $(shell $(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name)

head-y := arch/xtensa/kernel/head.o
core-y += arch/xtensa/kernel/ arch/xtensa/mm/
core-y += $(buildvar) $(buildplf)
core-y += arch/xtensa/boot/dts/

libs-y += arch/xtensa/lib/ $(LIBGCC)

Expand Down
7 changes: 7 additions & 0 deletions arch/xtensa/kernel/traps.c
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,7 @@ void do_interrupt(struct pt_regs *regs)
XCHAL_INTLEVEL7_MASK,
};
struct pt_regs *old_regs;
unsigned unhandled = ~0u;

trace_hardirqs_off();

Expand All @@ -283,13 +284,19 @@ void do_interrupt(struct pt_regs *regs)
for (level = LOCKLEVEL; level > 0; --level) {
if (int_at_level & int_level_mask[level]) {
int_at_level &= int_level_mask[level];
if (int_at_level & unhandled)
int_at_level &= unhandled;
else
unhandled |= int_level_mask[level];
break;
}
}

if (level == 0)
break;

/* clear lowest pending irq in the unhandled mask */
unhandled ^= (int_at_level & -int_at_level);
do_IRQ(__ffs(int_at_level), regs);
}

Expand Down
4 changes: 4 additions & 0 deletions arch/xtensa/platforms/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# SPDX-License-Identifier: GPL-2.0-only
obj-$(CONFIG_XTENSA_PLATFORM_XT2000) += xt2000/
obj-$(CONFIG_XTENSA_PLATFORM_ISS) += iss/
obj-$(CONFIG_XTENSA_PLATFORM_XTFPGA) += xtfpga/
6 changes: 3 additions & 3 deletions arch/xtensa/platforms/iss/console.c
Original file line number Diff line number Diff line change
Expand Up @@ -199,10 +199,10 @@ late_initcall(rs_init);

static void iss_console_write(struct console *co, const char *s, unsigned count)
{
int len = strlen(s);

if (s != 0 && *s != 0)
if (s && *s != 0) {
int len = strlen(s);
simc_write(1, s, count < len ? count : len);
}
}

static struct tty_driver* iss_console_device(struct console *c, int *index)
Expand Down

0 comments on commit b5d6d26

Please sign in to comment.