Loading Documentation/filesystems/f2fs.txt +20 −0 Original line number Diff line number Diff line Loading @@ -154,6 +154,26 @@ noinline_data Disable the inline data feature, inline data feature is enabled by default. data_flush Enable data flushing before checkpoint in order to persist data of regular and symlink. fault_injection=%d Enable fault injection in all supported types with specified injection rate. fault_type=%d Support configuring fault injection type, should be enabled with fault_injection option, fault type value is shown below, it supports single or combined type. Type_Name Type_Value FAULT_KMALLOC 0x000000001 FAULT_KVMALLOC 0x000000002 FAULT_PAGE_ALLOC 0x000000004 FAULT_PAGE_GET 0x000000008 FAULT_ALLOC_BIO 0x000000010 FAULT_ALLOC_NID 0x000000020 FAULT_ORPHAN 0x000000040 FAULT_BLOCK 0x000000080 FAULT_DIR_DEPTH 0x000000100 FAULT_EVICT_INODE 0x000000200 FAULT_TRUNCATE 0x000000400 FAULT_IO 0x000000800 FAULT_CHECKPOINT 0x000001000 FAULT_DISCARD 0x000002000 mode=%s Control block allocation mode which supports "adaptive" and "lfs". In "lfs" mode, there should be no random writes towards main area. Loading Makefile +1 −1 Original line number Diff line number Diff line VERSION = 4 PATCHLEVEL = 9 SUBLEVEL = 129 SUBLEVEL = 130 EXTRAVERSION = NAME = Roaring Lionus Loading arch/x86/xen/pmu.c +1 −1 Original line number Diff line number Diff line Loading @@ -477,7 +477,7 @@ static void xen_convert_regs(const struct xen_pmu_regs *xen_regs, irqreturn_t xen_pmu_irq_handler(int irq, void *dev_id) { int err, ret = IRQ_NONE; struct pt_regs regs; struct pt_regs regs = {0}; const struct xen_pmu_data *xenpmu_data = get_xenpmu_data(); uint8_t xenpmu_flags = get_xenpmu_flags(); Loading drivers/gpu/drm/nouveau/nouveau_connector.c +11 −9 Original line number Diff line number Diff line Loading @@ -271,12 +271,16 @@ nouveau_connector_detect(struct drm_connector *connector, bool force) nv_connector->edid = NULL; } /* Outputs are only polled while runtime active, so acquiring a * runtime PM ref here is unnecessary (and would deadlock upon * runtime suspend because it waits for polling to finish). /* Outputs are only polled while runtime active, so resuming the * device here is unnecessary (and would deadlock upon runtime suspend * because it waits for polling to finish). We do however, want to * prevent the autosuspend timer from elapsing during this operation * if possible. */ if (!drm_kms_helper_is_poll_worker()) { ret = pm_runtime_get_sync(connector->dev->dev); if (drm_kms_helper_is_poll_worker()) { pm_runtime_get_noresume(dev->dev); } else { ret = pm_runtime_get_sync(dev->dev); if (ret < 0 && ret != -EACCES) return conn_status; } Loading Loading @@ -354,10 +358,8 @@ nouveau_connector_detect(struct drm_connector *connector, bool force) out: if (!drm_kms_helper_is_poll_worker()) { pm_runtime_mark_last_busy(connector->dev->dev); pm_runtime_put_autosuspend(connector->dev->dev); } pm_runtime_mark_last_busy(dev->dev); pm_runtime_put_autosuspend(dev->dev); return conn_status; } Loading drivers/gpu/drm/nouveau/nouveau_display.c +25 −8 Original line number Diff line number Diff line Loading @@ -367,8 +367,6 @@ nouveau_display_hpd_work(struct work_struct *work) pm_runtime_get_sync(drm->dev->dev); drm_helper_hpd_irq_event(drm->dev); /* enable polling for external displays */ drm_kms_helper_poll_enable(drm->dev); pm_runtime_mark_last_busy(drm->dev->dev); pm_runtime_put_sync(drm->dev->dev); Loading @@ -391,15 +389,29 @@ nouveau_display_acpi_ntfy(struct notifier_block *nb, unsigned long val, { struct nouveau_drm *drm = container_of(nb, typeof(*drm), acpi_nb); struct acpi_bus_event *info = data; int ret; if (!strcmp(info->device_class, ACPI_VIDEO_CLASS)) { if (info->type == ACPI_VIDEO_NOTIFY_PROBE) { /* * This may be the only indication we receive of a * connector hotplug on a runtime suspended GPU, * schedule hpd_work to check. ret = pm_runtime_get(drm->dev->dev); if (ret == 1 || ret == -EACCES) { /* If the GPU is already awake, or in a state * where we can't wake it up, it can handle * it's own hotplug events. */ pm_runtime_put_autosuspend(drm->dev->dev); } else if (ret == 0) { /* This may be the only indication we receive * of a connector hotplug on a runtime * suspended GPU, schedule hpd_work to check. */ NV_DEBUG(drm, "ACPI requested connector reprobe\n"); schedule_work(&drm->hpd_work); pm_runtime_put_noidle(drm->dev->dev); } else { NV_WARN(drm, "Dropped ACPI reprobe event due to RPM error: %d\n", ret); } /* acpi-video should not generate keypresses for this */ return NOTIFY_BAD; Loading @@ -422,6 +434,11 @@ nouveau_display_init(struct drm_device *dev) if (ret) return ret; /* enable connector detection and polling for connectors without HPD * support */ drm_kms_helper_poll_enable(dev); /* enable hotplug interrupts */ list_for_each_entry(connector, &dev->mode_config.connector_list, head) { struct nouveau_connector *conn = nouveau_connector(connector); Loading Loading
Documentation/filesystems/f2fs.txt +20 −0 Original line number Diff line number Diff line Loading @@ -154,6 +154,26 @@ noinline_data Disable the inline data feature, inline data feature is enabled by default. data_flush Enable data flushing before checkpoint in order to persist data of regular and symlink. fault_injection=%d Enable fault injection in all supported types with specified injection rate. fault_type=%d Support configuring fault injection type, should be enabled with fault_injection option, fault type value is shown below, it supports single or combined type. Type_Name Type_Value FAULT_KMALLOC 0x000000001 FAULT_KVMALLOC 0x000000002 FAULT_PAGE_ALLOC 0x000000004 FAULT_PAGE_GET 0x000000008 FAULT_ALLOC_BIO 0x000000010 FAULT_ALLOC_NID 0x000000020 FAULT_ORPHAN 0x000000040 FAULT_BLOCK 0x000000080 FAULT_DIR_DEPTH 0x000000100 FAULT_EVICT_INODE 0x000000200 FAULT_TRUNCATE 0x000000400 FAULT_IO 0x000000800 FAULT_CHECKPOINT 0x000001000 FAULT_DISCARD 0x000002000 mode=%s Control block allocation mode which supports "adaptive" and "lfs". In "lfs" mode, there should be no random writes towards main area. Loading
Makefile +1 −1 Original line number Diff line number Diff line VERSION = 4 PATCHLEVEL = 9 SUBLEVEL = 129 SUBLEVEL = 130 EXTRAVERSION = NAME = Roaring Lionus Loading
arch/x86/xen/pmu.c +1 −1 Original line number Diff line number Diff line Loading @@ -477,7 +477,7 @@ static void xen_convert_regs(const struct xen_pmu_regs *xen_regs, irqreturn_t xen_pmu_irq_handler(int irq, void *dev_id) { int err, ret = IRQ_NONE; struct pt_regs regs; struct pt_regs regs = {0}; const struct xen_pmu_data *xenpmu_data = get_xenpmu_data(); uint8_t xenpmu_flags = get_xenpmu_flags(); Loading
drivers/gpu/drm/nouveau/nouveau_connector.c +11 −9 Original line number Diff line number Diff line Loading @@ -271,12 +271,16 @@ nouveau_connector_detect(struct drm_connector *connector, bool force) nv_connector->edid = NULL; } /* Outputs are only polled while runtime active, so acquiring a * runtime PM ref here is unnecessary (and would deadlock upon * runtime suspend because it waits for polling to finish). /* Outputs are only polled while runtime active, so resuming the * device here is unnecessary (and would deadlock upon runtime suspend * because it waits for polling to finish). We do however, want to * prevent the autosuspend timer from elapsing during this operation * if possible. */ if (!drm_kms_helper_is_poll_worker()) { ret = pm_runtime_get_sync(connector->dev->dev); if (drm_kms_helper_is_poll_worker()) { pm_runtime_get_noresume(dev->dev); } else { ret = pm_runtime_get_sync(dev->dev); if (ret < 0 && ret != -EACCES) return conn_status; } Loading Loading @@ -354,10 +358,8 @@ nouveau_connector_detect(struct drm_connector *connector, bool force) out: if (!drm_kms_helper_is_poll_worker()) { pm_runtime_mark_last_busy(connector->dev->dev); pm_runtime_put_autosuspend(connector->dev->dev); } pm_runtime_mark_last_busy(dev->dev); pm_runtime_put_autosuspend(dev->dev); return conn_status; } Loading
drivers/gpu/drm/nouveau/nouveau_display.c +25 −8 Original line number Diff line number Diff line Loading @@ -367,8 +367,6 @@ nouveau_display_hpd_work(struct work_struct *work) pm_runtime_get_sync(drm->dev->dev); drm_helper_hpd_irq_event(drm->dev); /* enable polling for external displays */ drm_kms_helper_poll_enable(drm->dev); pm_runtime_mark_last_busy(drm->dev->dev); pm_runtime_put_sync(drm->dev->dev); Loading @@ -391,15 +389,29 @@ nouveau_display_acpi_ntfy(struct notifier_block *nb, unsigned long val, { struct nouveau_drm *drm = container_of(nb, typeof(*drm), acpi_nb); struct acpi_bus_event *info = data; int ret; if (!strcmp(info->device_class, ACPI_VIDEO_CLASS)) { if (info->type == ACPI_VIDEO_NOTIFY_PROBE) { /* * This may be the only indication we receive of a * connector hotplug on a runtime suspended GPU, * schedule hpd_work to check. ret = pm_runtime_get(drm->dev->dev); if (ret == 1 || ret == -EACCES) { /* If the GPU is already awake, or in a state * where we can't wake it up, it can handle * it's own hotplug events. */ pm_runtime_put_autosuspend(drm->dev->dev); } else if (ret == 0) { /* This may be the only indication we receive * of a connector hotplug on a runtime * suspended GPU, schedule hpd_work to check. */ NV_DEBUG(drm, "ACPI requested connector reprobe\n"); schedule_work(&drm->hpd_work); pm_runtime_put_noidle(drm->dev->dev); } else { NV_WARN(drm, "Dropped ACPI reprobe event due to RPM error: %d\n", ret); } /* acpi-video should not generate keypresses for this */ return NOTIFY_BAD; Loading @@ -422,6 +434,11 @@ nouveau_display_init(struct drm_device *dev) if (ret) return ret; /* enable connector detection and polling for connectors without HPD * support */ drm_kms_helper_poll_enable(dev); /* enable hotplug interrupts */ list_for_each_entry(connector, &dev->mode_config.connector_list, head) { struct nouveau_connector *conn = nouveau_connector(connector); Loading