Pull s390 fixes from Alexander Gordeev: - Avoid linker error for randomly generated config file that has CONFIG_BRANCH_PROFILE_NONE enabled and make it similar to riscv, x86 and also to commit 4bf3ec384edf ("s390: disable branch profiling for vdso"). - Currently, if the device is offline and all the channel paths are either configured or varied offline, the associated subchannel gets unregistered. Don't unregister the subchannel, instead unregister offline device. * tag 's390-6.4-3' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: s390/purgatory: disable branch profiling s390/cio: unregister device when the only path is gone
Unified · Split
| @@ -26,6 +26,7 @@ KBUILD_CFLAGS += -Wno-pointer-sign -Wno-sign-compare · 25 unmodified lines | |||
| 26 | KBUILD_CFLAGS += -fno-zero-initialized-in-bss -fno-builtin -ffreestanding | 26 | KBUILD_CFLAGS += -fno-zero-initialized-in-bss -fno-builtin -ffreestanding |
| 27 | KBUILD_CFLAGS += -Os -m64 -msoft-float -fno-common | 27 | KBUILD_CFLAGS += -Os -m64 -msoft-float -fno-common |
| 28 | KBUILD_CFLAGS += -fno-stack-protector | 28 | KBUILD_CFLAGS += -fno-stack-protector |
| 29 | KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING | ||
| 29 | KBUILD_CFLAGS += $(CLANG_FLAGS) | 30 | KBUILD_CFLAGS += $(CLANG_FLAGS) |
| 30 | KBUILD_CFLAGS += $(call cc-option,-fno-PIE) | 31 | KBUILD_CFLAGS += $(call cc-option,-fno-PIE) |
| 31 | KBUILD_AFLAGS := $(filter-out -DCC_USING_EXPOLINE,$(KBUILD_AFLAGS)) | 32 | KBUILD_AFLAGS := $(filter-out -DCC_USING_EXPOLINE,$(KBUILD_AFLAGS)) |
| @@ -1376,6 +1376,7 @@ void ccw_device_set_notoper(struct ccw_device *cdev) · 1375 unmodified lines | |||
| 1376 | enum io_sch_action { | 1376 | enum io_sch_action { |
| 1377 | IO_SCH_UNREG, | 1377 | IO_SCH_UNREG, |
| 1378 | IO_SCH_ORPH_UNREG, | 1378 | IO_SCH_ORPH_UNREG, |
| 1379 | IO_SCH_UNREG_CDEV, | ||
| 1379 | IO_SCH_ATTACH, | 1380 | IO_SCH_ATTACH, |
| 1380 | IO_SCH_UNREG_ATTACH, | 1381 | IO_SCH_UNREG_ATTACH, |
| 1381 | IO_SCH_ORPH_ATTACH, | 1382 | IO_SCH_ORPH_ATTACH, |
| @@ -1408,7 +1409,7 @@ static enum io_sch_action sch_get_action(struct subchannel *sch) · 26 unmodified lines | |||
| 1408 | } | 1409 | } |
| 1409 | if ((sch->schib.pmcw.pam & sch->opm) == 0) { | 1410 | if ((sch->schib.pmcw.pam & sch->opm) == 0) { |
| 1410 | if (ccw_device_notify(cdev, CIO_NO_PATH) != NOTIFY_OK) | 1411 | if (ccw_device_notify(cdev, CIO_NO_PATH) != NOTIFY_OK) |
| 1411 | return IO_SCH_UNREG; | 1412 | return IO_SCH_UNREG_CDEV; |
| 1412 | return IO_SCH_DISC; | 1413 | return IO_SCH_DISC; |
| 1413 | } | 1414 | } |
| 1414 | if (device_is_disconnected(cdev)) | 1415 | if (device_is_disconnected(cdev)) |
| @@ -1470,6 +1471,7 @@ static int io_subchannel_sch_event(struct subchannel *sch, int process) · 55 unmodified lines | |||
| 1470 | case IO_SCH_ORPH_ATTACH: | 1471 | case IO_SCH_ORPH_ATTACH: |
| 1471 | ccw_device_set_disconnected(cdev); | 1472 | ccw_device_set_disconnected(cdev); |
| 1472 | break; | 1473 | break; |
| 1474 | case IO_SCH_UNREG_CDEV: | ||
| 1473 | case IO_SCH_UNREG_ATTACH: | 1475 | case IO_SCH_UNREG_ATTACH: |
| 1474 | case IO_SCH_UNREG: | 1476 | case IO_SCH_UNREG: |
| 1475 | if (!cdev) | 1477 | if (!cdev) |
| @@ -1503,6 +1505,7 @@ static int io_subchannel_sch_event(struct subchannel *sch, int process) · 27 unmodified lines | |||
| 1503 | if (rc) | 1505 | if (rc) |
| 1504 | goto out; | 1506 | goto out; |
| 1505 | break; | 1507 | break; |
| 1508 | case IO_SCH_UNREG_CDEV: | ||
| 1506 | case IO_SCH_UNREG_ATTACH: | 1509 | case IO_SCH_UNREG_ATTACH: |
| 1507 | spin_lock_irqsave(sch->lock, flags); | 1510 | spin_lock_irqsave(sch->lock, flags); |
| 1508 | sch_set_cdev(sch, NULL); | 1511 | sch_set_cdev(sch, NULL); |