From c51afc063f3f2bae7e955e600c018d34a2df6e36 Mon Sep 17 00:00:00 2001 From: ImgBotApp Date: Tue, 23 Jun 2020 15:35:55 +0000 Subject: [PATCH] [ImgBot] Optimize images *Total -- 2,012.91kb -> 1,527.59kb (24.11%) /Documentation/RCU/Design/Memory-Ordering/rcu_node-lock.svg -- 6.37kb -> 1.72kb (72.95%) /Documentation/RCU/Design/Memory-Ordering/TreeRCU-callback-invocation.svg -- 16.36kb -> 8.54kb (47.8%) /Documentation/media/uapi/v4l/subdev-image-processing-crop.svg -- 8.34kb -> 4.64kb (44.31%) /Documentation/RCU/Design/Data-Structures/TreeMapping.svg -- 8.99kb -> 5.17kb (42.49%) /Documentation/RCU/Design/Data-Structures/BigTreeClassicRCU.svg -- 12.41kb -> 7.24kb (41.72%) /Documentation/RCU/Design/Data-Structures/TreeMappingLevel.svg -- 11.37kb -> 6.78kb (40.33%) /Documentation/RCU/Design/Data-Structures/nxtlist.svg -- 11.45kb -> 6.87kb (40.04%) /Documentation/RCU/Design/Memory-Ordering/TreeRCU-callback-registry.svg -- 23.37kb -> 14.04kb (39.92%) /Documentation/RCU/Design/Data-Structures/TreeLevel.svg -- 22.98kb -> 14.10kb (38.65%) /Documentation/RCU/Design/Data-Structures/HugeTreeClassicRCU.svg -- 24.77kb -> 15.24kb (38.45%) /Documentation/media/uapi/v4l/nv12mt.svg -- 13.78kb -> 8.54kb (38.05%) /Documentation/RCU/Design/Data-Structures/blkd_task.svg -- 20.36kb -> 12.80kb (37.13%) /Documentation/RCU/Design/Expedited-Grace-Periods/Funnel0.svg -- 10.33kb -> 6.56kb (36.48%) /Documentation/RCU/Design/Expedited-Grace-Periods/Funnel1.svg -- 10.33kb -> 6.56kb (36.47%) /Documentation/RCU/Design/Expedited-Grace-Periods/ExpRCUFlow.svg -- 32.03kb -> 20.36kb (36.44%) /Documentation/RCU/Design/Expedited-Grace-Periods/ExpSchedFlow.svg -- 31.91kb -> 20.31kb (36.34%) /Documentation/RCU/Design/Expedited-Grace-Periods/Funnel2.svg -- 10.83kb -> 6.91kb (36.22%) /Documentation/RCU/Design/Data-Structures/BigTreePreemptRCUBHdyntickCB.svg -- 22.47kb -> 14.42kb (35.8%) /Documentation/RCU/Design/Expedited-Grace-Periods/Funnel3.svg -- 12.39kb -> 7.96kb (35.8%) /Documentation/RCU/Design/Expedited-Grace-Periods/Funnel4.svg -- 12.39kb -> 7.96kb (35.79%) /Documentation/RCU/Design/Expedited-Grace-Periods/Funnel8.svg -- 11.85kb -> 7.62kb (35.73%) /Documentation/media/uapi/v4l/subdev-image-processing-scaling-multi-source.svg -- 14.70kb -> 9.45kb (35.71%) /Documentation/RCU/Design/Expedited-Grace-Periods/Funnel5.svg -- 12.90kb -> 8.31kb (35.59%) /Documentation/RCU/Design/Expedited-Grace-Periods/Funnel6.svg -- 12.91kb -> 8.32kb (35.57%) /Documentation/RCU/Design/Expedited-Grace-Periods/Funnel7.svg -- 13.42kb -> 8.67kb (35.39%) /Documentation/RCU/Design/Requirements/GPpartitionReaders1.svg -- 16.87kb -> 10.93kb (35.24%) /Documentation/i2c/i2c.svg -- 54.70kb -> 35.52kb (35.06%) /Documentation/RCU/Design/Memory-Ordering/TreeRCU-dyntick.svg -- 25.07kb -> 16.36kb (34.74%) /Documentation/RCU/Design/Requirements/ReadersPartitionGP1.svg -- 29.35kb -> 19.33kb (34.12%) /Documentation/media/uapi/v4l/subdev-image-processing-full.svg -- 20.05kb -> 13.24kb (33.95%) /Documentation/RCU/Design/Memory-Ordering/TreeRCU-hotplug.svg -- 28.02kb -> 18.64kb (33.49%) /Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-1.svg -- 23.51kb -> 15.75kb (33.01%) /Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-3.svg -- 22.62kb -> 15.48kb (31.55%) /Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-2.svg -- 23.82kb -> 16.59kb (30.36%) /Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-cleanup.svg -- 42.46kb -> 29.65kb (30.17%) /Documentation/RCU/Design/Memory-Ordering/TreeRCU-qs.svg -- 43.21kb -> 30.37kb (29.73%) /Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-fqs.svg -- 49.63kb -> 34.93kb (29.61%) /Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp.svg -- 208.62kb -> 148.33kb (28.9%) /Documentation/media/uapi/v4l/vbi_hsync.svg -- 18.02kb -> 12.94kb (28.21%) /Documentation/media/uapi/v4l/crop.svg -- 17.82kb -> 12.94kb (27.35%) /Documentation/doc-guide/svg_image.svg -- 0.57kb -> 0.42kb (25.34%) /Documentation/media/uapi/v4l/fieldseq_bt.svg -- 169.89kb -> 127.26kb (25.09%) /Documentation/media/uapi/v4l/fieldseq_tb.svg -- 171.22kb -> 128.29kb (25.07%) /Documentation/media/uapi/v4l/nv12mt_example.svg -- 44.87kb -> 33.62kb (25.07%) /Documentation/media/uapi/v4l/constraints.svg -- 7.58kb -> 5.93kb (21.77%) /Documentation/media/uapi/v4l/vbi_625.svg -- 58.36kb -> 46.08kb (21.04%) /Documentation/media/uapi/v4l/vbi_525.svg -- 53.87kb -> 42.76kb (20.63%) /Documentation/media/uapi/dvb/dvbstb.svg -- 10.01kb -> 8.30kb (17.1%) /Documentation/admin-guide/blockdev/drbd/DRBD-data-packets.svg -- 17.02kb -> 14.43kb (15.24%) /Documentation/media/uapi/v4l/bayer.svg -- 19.39kb -> 17.73kb (8.59%) /Documentation/media/typical_media_device.svg -- 80.81kb -> 73.98kb (8.45%) /Documentation/input/interactive.svg -- 3.32kb -> 3.22kb (2.97%) /Documentation/media/uapi/v4l/selection.svg -- 204.44kb -> 199.05kb (2.64%) /Documentation/input/shape.svg -- 5.55kb -> 5.41kb (2.52%) /Documentation/media/v4l-drivers/ipu3_rcb.svg -- 75.50kb -> 73.70kb (2.39%) /Documentation/networking/tls-offload-reorder-good.svg -- 6.38kb -> 6.28kb (1.55%) /Documentation/networking/tls-offload-reorder-bad.svg -- 6.38kb -> 6.28kb (1.55%) /Documentation/networking/tls-offload-layers.svg -- 49.03kb -> 48.87kb (0.33%) /Documentation/logo.gif -- 15.95kb -> 15.92kb (0.23%) Signed-off-by: ImgBotApp --- .../Data-Structures/BigTreeClassicRCU.svg | 475 +- .../BigTreePreemptRCUBHdyntickCB.svg | 663 +-- .../Data-Structures/HugeTreeClassicRCU.svg | 940 +-- .../RCU/Design/Data-Structures/TreeLevel.svg | 829 +-- .../Design/Data-Structures/TreeMapping.svg | 306 +- .../Data-Structures/TreeMappingLevel.svg | 381 +- .../RCU/Design/Data-Structures/blkd_task.svg | 632 +- .../RCU/Design/Data-Structures/nxtlist.svg | 387 +- .../Expedited-Grace-Periods/ExpRCUFlow.svg | 831 +-- .../Expedited-Grace-Periods/ExpSchedFlow.svg | 831 +-- .../Expedited-Grace-Periods/Funnel0.svg | 276 +- .../Expedited-Grace-Periods/Funnel1.svg | 276 +- .../Expedited-Grace-Periods/Funnel2.svg | 288 +- .../Expedited-Grace-Periods/Funnel3.svg | 324 +- .../Expedited-Grace-Periods/Funnel4.svg | 324 +- .../Expedited-Grace-Periods/Funnel5.svg | 336 +- .../Expedited-Grace-Periods/Funnel6.svg | 336 +- .../Expedited-Grace-Periods/Funnel7.svg | 348 +- .../Expedited-Grace-Periods/Funnel8.svg | 312 +- .../TreeRCU-callback-invocation.svg | 487 +- .../TreeRCU-callback-registry.svg | 656 +-- .../Memory-Ordering/TreeRCU-dyntick.svg | 701 +-- .../Memory-Ordering/TreeRCU-gp-cleanup.svg | 1134 +--- .../Design/Memory-Ordering/TreeRCU-gp-fqs.svg | 1310 +---- .../Memory-Ordering/TreeRCU-gp-init-1.svg | 659 +-- .../Memory-Ordering/TreeRCU-gp-init-2.svg | 657 +-- .../Memory-Ordering/TreeRCU-gp-init-3.svg | 637 +- .../RCU/Design/Memory-Ordering/TreeRCU-gp.svg | 5145 +---------------- .../Memory-Ordering/TreeRCU-hotplug.svg | 776 +-- .../RCU/Design/Memory-Ordering/TreeRCU-qs.svg | 1096 +--- .../Design/Memory-Ordering/rcu_node-lock.svg | 230 +- .../Requirements/GPpartitionReaders1.svg | 375 +- .../Requirements/ReadersPartitionGP1.svg | 640 +- .../blockdev/drbd/DRBD-data-packets.svg | 460 +- Documentation/doc-guide/svg_image.svg | 11 +- Documentation/i2c/i2c.svg | 1342 +---- Documentation/input/interactive.svg | 25 +- Documentation/input/shape.svg | 40 +- Documentation/logo.gif | Bin 16335 -> 16298 bytes Documentation/media/typical_media_device.svg | 117 +- Documentation/media/uapi/dvb/dvbstb.svg | 44 +- Documentation/media/uapi/v4l/bayer.svg | 57 +- Documentation/media/uapi/v4l/constraints.svg | 38 +- Documentation/media/uapi/v4l/crop.svg | 291 +- Documentation/media/uapi/v4l/fieldseq_bt.svg | 2622 +-------- Documentation/media/uapi/v4l/fieldseq_tb.svg | 2619 +-------- Documentation/media/uapi/v4l/nv12mt.svg | 478 +- .../media/uapi/v4l/nv12mt_example.svg | 1617 +----- Documentation/media/uapi/v4l/selection.svg | 1179 +--- .../uapi/v4l/subdev-image-processing-crop.svg | 313 +- .../uapi/v4l/subdev-image-processing-full.svg | 753 +-- ...-image-processing-scaling-multi-source.svg | 551 +- Documentation/media/uapi/v4l/vbi_525.svg | 822 +-- Documentation/media/uapi/v4l/vbi_625.svg | 871 +-- Documentation/media/uapi/v4l/vbi_hsync.svg | 322 +- Documentation/media/v4l-drivers/ipu3_rcb.svg | 332 +- .../networking/tls-offload-layers.svg | 2 +- .../networking/tls-offload-reorder-bad.svg | 2 +- .../networking/tls-offload-reorder-good.svg | 2 +- 59 files changed, 58 insertions(+), 38450 deletions(-) diff --git a/Documentation/RCU/Design/Data-Structures/BigTreeClassicRCU.svg b/Documentation/RCU/Design/Data-Structures/BigTreeClassicRCU.svg index 727e270b11e4e3..e7ea7b702168fe 100644 --- a/Documentation/RCU/Design/Data-Structures/BigTreeClassicRCU.svg +++ b/Documentation/RCU/Design/Data-Structures/BigTreeClassicRCU.svg @@ -1,474 +1 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - struct - - rcu_data - - CPU 0 - - struct - - rcu_data - - CPU 15 - - struct - - rcu_data - - CPU 1007 - - struct - - rcu_data - - CPU 1023 - - struct rcu_state - - struct - - rcu_node - - rcu_node - - struct - - struct - - rcu_node - - - - - - - - +structrcu_dataCPU 0structrcu_dataCPU 15structrcu_dataCPU 1007structrcu_dataCPU 1023struct rcu_statestructrcu_nodercu_nodestructstructrcu_node \ No newline at end of file diff --git a/Documentation/RCU/Design/Data-Structures/BigTreePreemptRCUBHdyntickCB.svg b/Documentation/RCU/Design/Data-Structures/BigTreePreemptRCUBHdyntickCB.svg index 3a1a4f85dc3a5d..2269d5a546a587 100644 --- a/Documentation/RCU/Design/Data-Structures/BigTreePreemptRCUBHdyntickCB.svg +++ b/Documentation/RCU/Design/Data-Structures/BigTreePreemptRCUBHdyntickCB.svg @@ -1,662 +1 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - struct - - rcu_head - - struct - - rcu_head - - struct - - rcu_head - - rcu_state - - - struct - - rcu_node - - struct - - rcu_node - - rcu_node - - struct - - struct - - rcu_data - - struct - - rcu_data - - struct - - rcu_data - - struct - - rcu_data - - struct rcu_state - - - - - - - - - - - - - - - +structrcu_headstructrcu_headstructrcu_headrcu_statestructrcu_nodestructrcu_nodercu_nodestructstructrcu_datastructrcu_datastructrcu_datastructrcu_datastruct rcu_state \ No newline at end of file diff --git a/Documentation/RCU/Design/Data-Structures/HugeTreeClassicRCU.svg b/Documentation/RCU/Design/Data-Structures/HugeTreeClassicRCU.svg index 2bf12b46820602..78d426d3e1f223 100644 --- a/Documentation/RCU/Design/Data-Structures/HugeTreeClassicRCU.svg +++ b/Documentation/RCU/Design/Data-Structures/HugeTreeClassicRCU.svg @@ -1,939 +1 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - rcu_node - - struct - - struct - - rcu_node - - struct - - rcu_node - - rcu_node - - struct - - rcu_node - - struct - - struct - - rcu_node - - CPU 0 - - struct - - rcu_data - - CPU 15 - - struct - - rcu_data - - struct - - rcu_data - - CPU 21823 - - CPU 21839 - - rcu_data - - struct - - struct - - rcu_data - - CPU 43679 - - CPU 43695 - - rcu_data - - struct - - struct - - rcu_data - - CPU 65519 - - CPU 65535 - - rcu_data - - struct - - struct rcu_state - - struct - - rcu_node - - +rcu_nodestructstructrcu_nodestructrcu_nodercu_nodestructrcu_nodestructstructrcu_nodeCPU 0structrcu_dataCPU 15structrcu_datastructrcu_dataCPU 21823CPU 21839rcu_datastructstructrcu_dataCPU 43679CPU 43695rcu_datastructstructrcu_dataCPU 65519CPU 65535rcu_datastructstruct rcu_statestructrcu_node \ No newline at end of file diff --git a/Documentation/RCU/Design/Data-Structures/TreeLevel.svg b/Documentation/RCU/Design/Data-Structures/TreeLevel.svg index 7a7eb3bac95cc9..704dbb96bb9e92 100644 --- a/Documentation/RCU/Design/Data-Structures/TreeLevel.svg +++ b/Documentation/RCU/Design/Data-Structures/TreeLevel.svg @@ -1,828 +1 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - rcu_node - - struct - - struct - - rcu_node - - struct - - rcu_node - - rcu_node - - struct - - rcu_node - - struct - - struct - - rcu_node - - ->level[0] - - ->level[1] - - ->level[2] - - struct - - rcu_node - - CPU 15 - - CPU 0 - - CPU 65535 - - CPU 65519 - - CPU 43695 - - CPU 43679 - - CPU 21839 - - CPU 21823 - - struct rcu_state - - +rcu_nodestructstructrcu_nodestructrcu_nodercu_nodestructrcu_nodestructstructrcu_node->level[0]->level[1]->level[2]structrcu_nodeCPU 15CPU 0CPU 65535CPU 65519CPU 43695CPU 43679CPU 21839CPU 21823struct rcu_state \ No newline at end of file diff --git a/Documentation/RCU/Design/Data-Structures/TreeMapping.svg b/Documentation/RCU/Design/Data-Structures/TreeMapping.svg index 729cfa9e6cdb8e..6df2b7166b64ae 100644 --- a/Documentation/RCU/Design/Data-Structures/TreeMapping.svg +++ b/Documentation/RCU/Design/Data-Structures/TreeMapping.svg @@ -1,305 +1 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0:7 - - 4:7 - - 0:1 - - 2:3 - - 4:5 - - 6:7 - - 0:3 - - struct rcu_state - - +0:74:70:12:34:56:70:3struct rcu_state \ No newline at end of file diff --git a/Documentation/RCU/Design/Data-Structures/TreeMappingLevel.svg b/Documentation/RCU/Design/Data-Structures/TreeMappingLevel.svg index 5b416a4b8453f6..db6bf2ba19884e 100644 --- a/Documentation/RCU/Design/Data-Structures/TreeMappingLevel.svg +++ b/Documentation/RCU/Design/Data-Structures/TreeMappingLevel.svg @@ -1,380 +1 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->level[0] - - ->level[1] - - ->level[2] - - 0:7 - - 4:7 - - 0:1 - - 2:3 - - 4:5 - - 6:7 - - 0:3 - - struct rcu_state - - - - - - - - - +->level[0]->level[1]->level[2]0:74:70:12:34:56:70:3struct rcu_state \ No newline at end of file diff --git a/Documentation/RCU/Design/Data-Structures/blkd_task.svg b/Documentation/RCU/Design/Data-Structures/blkd_task.svg index bed13e9ecab899..75f19d7a9b8ce3 100644 --- a/Documentation/RCU/Design/Data-Structures/blkd_task.svg +++ b/Documentation/RCU/Design/Data-Structures/blkd_task.svg @@ -1,631 +1 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - struct - - rcu_node - - struct - - rcu_node - - struct - - rcu_data - - struct - - rcu_data - - struct - - rcu_data - - struct - - rcu_data - - struct rcu_state - - - - - - - - - - rcu_state - - T3 - - T2 - - T1 - - - - - - - - - - - - - rcu_node - - struct - - blkd_tasks - - gp_tasks - - exp_tasks - - +structrcu_nodestructrcu_nodestructrcu_datastructrcu_datastructrcu_datastructrcu_datastruct rcu_statercu_stateT3T2T1rcu_nodestructblkd_tasksgp_tasksexp_tasks \ No newline at end of file diff --git a/Documentation/RCU/Design/Data-Structures/nxtlist.svg b/Documentation/RCU/Design/Data-Structures/nxtlist.svg index 0223e79c38e003..97f62111038b04 100644 --- a/Documentation/RCU/Design/Data-Structures/nxtlist.svg +++ b/Documentation/RCU/Design/Data-Structures/nxtlist.svg @@ -1,386 +1 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->head - - ->tails[RCU_DONE_TAIL] - - ->tails[RCU_WAIT_TAIL] - - ->tails[RCU_NEXT_READY_TAIL] - - ->tails[RCU_NEXT_TAIL] - - CB 1 - - next - - CB 3 - - next - - CB 4 - - next - - CB 2 - - next - - +->head->tails[RCU_DONE_TAIL]->tails[RCU_WAIT_TAIL]->tails[RCU_NEXT_READY_TAIL]->tails[RCU_NEXT_TAIL]CB 1nextCB 3nextCB 4nextCB 2next \ No newline at end of file diff --git a/Documentation/RCU/Design/Expedited-Grace-Periods/ExpRCUFlow.svg b/Documentation/RCU/Design/Expedited-Grace-Periods/ExpRCUFlow.svg index 7c6c90bd02c942..d7431d8a231a0a 100644 --- a/Documentation/RCU/Design/Expedited-Grace-Periods/ExpRCUFlow.svg +++ b/Documentation/RCU/Design/Expedited-Grace-Periods/ExpRCUFlow.svg @@ -1,830 +1 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Idle oroffline? - - - - CPU N Start - - - - Y - - - Done - - - - Send IPI to CPU N - - - - - In RCUread-sidecriticalsection? - - N - - - - IPI Handler - - - - N - - - Report CPUQuiescentState - - - Y - - - rcu_read_unlock() - - - - - - Context Switch - - - - - Report CPUand TaskQuiescent States - - - - Enqueue Task - - - - - - Report CPUQuiescentState - - - - - +Idle oroffline?CPU N StartYDoneSend IPI to CPU NIn RCUread-sidecriticalsection?NIPI HandlerNReport CPUQuiescentStateYrcu_read_unlock()Context SwitchReport CPUand TaskQuiescent StatesEnqueue TaskReport CPUQuiescentState \ No newline at end of file diff --git a/Documentation/RCU/Design/Expedited-Grace-Periods/ExpSchedFlow.svg b/Documentation/RCU/Design/Expedited-Grace-Periods/ExpSchedFlow.svg index 6189ffcc6aff8e..77e7bfc38be088 100644 --- a/Documentation/RCU/Design/Expedited-Grace-Periods/ExpSchedFlow.svg +++ b/Documentation/RCU/Design/Expedited-Grace-Periods/ExpSchedFlow.svg @@ -1,830 +1 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Idle oroffline? - - - - CPU N Start - - - - Y - - - Done - - - - Send IPI to CPU N - - - - - CPU idle? - - N - - - - IPI Handler - - - - Y - - - Report CPUQuiescentState - - - N - - - Context Switch - - - - - - CPU Offline - - - - - Report CPUQuiescentState - - - - - Report CPUQuiescentState - - - - - - Requestcontext switch - - - +Idle oroffline?CPU N StartYDoneSend IPI to CPU NCPU idle?NIPI HandlerYReport CPUQuiescentStateNContext SwitchCPU OfflineReport CPUQuiescentStateReport CPUQuiescentStateRequestcontext switch \ No newline at end of file diff --git a/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel0.svg b/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel0.svg index 98af665579088c..731789f5570315 100644 --- a/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel0.svg +++ b/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel0.svg @@ -1,275 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - ->expedited_sequence: 0 - - - - - - - - - - - - :0 - - - - - - - - :0 - - - +->expedited_sequence: 0:0:0 \ No newline at end of file diff --git a/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel1.svg b/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel1.svg index e0184a37aec745..83e41e63c3a008 100644 --- a/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel1.svg +++ b/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel1.svg @@ -1,275 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - ->expedited_sequence: 0 - - - - - - - - - - - - A:2 - - - - - - - - B:2 - - - +->expedited_sequence: 0A:2B:2 \ No newline at end of file diff --git a/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel2.svg b/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel2.svg index 1bc3fed54d58fa..d73ccd23ecb1a1 100644 --- a/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel2.svg +++ b/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel2.svg @@ -1,287 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - ->expedited_sequence: 0 - - - - - - - - - - - - :2 - - - - - - - - B:2 - - A:2 - - +->expedited_sequence: 0:2B:2A:2 \ No newline at end of file diff --git a/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel3.svg b/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel3.svg index 6d8a1bffb3e4b6..e9836ae6476900 100644 --- a/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel3.svg +++ b/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel3.svg @@ -1,323 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - ->expedited_sequence: 0 GP: A - - - - - - - - - - - - :2 - C - - - - - - - - :2 - D - - :2 - B - - +->expedited_sequence: 0 GP: A:2C:2D:2B \ No newline at end of file diff --git a/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel4.svg b/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel4.svg index 44018fd6342ba6..ca58b380559491 100644 --- a/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel4.svg +++ b/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel4.svg @@ -1,323 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - ->expedited_sequence: 1 GP: A - - - - - - - - - - - - E:4 - C - - - - - - - - F:4 - D - - :2 - B - - +->expedited_sequence: 1 GP: AE:4CF:4D:2B \ No newline at end of file diff --git a/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel5.svg b/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel5.svg index e5eef50454fb60..e5d6f29b113ba1 100644 --- a/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel5.svg +++ b/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel5.svg @@ -1,335 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - ->expedited_sequence: 1 GP: A,E - - - - - - - - - - - - :4 - C - - - - - - - - :4 - D - - :4 - B - F - - +->expedited_sequence: 1 GP: A,E:4C:4D:4BF \ No newline at end of file diff --git a/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel6.svg b/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel6.svg index fbd2c1892886e0..e4c3f509fa4974 100644 --- a/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel6.svg +++ b/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel6.svg @@ -1,335 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - ->expedited_sequence: 2 GP: E Wakeup: A - - - - - - - - - - - - :4 - C - - - - - - - - :4 - D - - :4 - B - F - - +->expedited_sequence: 2 GP: E Wakeup: A:4C:4D:4BF \ No newline at end of file diff --git a/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel7.svg b/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel7.svg index 502e159ed278e1..7729cdadd7e98a 100644 --- a/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel7.svg +++ b/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel7.svg @@ -1,347 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - ->expedited_sequence: 3 GP: E,H Wakeup: A - - - - - - - - - - - - :4 - C - - - - - - - - :6 - D - - :6 - B - F - G - - +->expedited_sequence: 3 GP: E,H Wakeup: A:4C:6D:6BFG \ No newline at end of file diff --git a/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel8.svg b/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel8.svg index 677401551c7d03..641a6a57f3f02b 100644 --- a/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel8.svg +++ b/Documentation/RCU/Design/Expedited-Grace-Periods/Funnel8.svg @@ -1,311 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - ->expedited_sequence: 3 GP: E,H - - - - - - - - - - - - :4 - - - - - - - - :6 - - :6 - F - G - - +->expedited_sequence: 3 GP: E,H:4:6:6FG \ No newline at end of file diff --git a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-callback-invocation.svg b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-callback-invocation.svg index 3fcf0c17cef229..f7d0bdc6337039 100644 --- a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-callback-invocation.svg +++ b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-callback-invocation.svg @@ -1,486 +1 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - rcu_sched_clock_irq() - - rcu_cleanup_after_idle() - - rcu_advance_cbs() - - - Leaf - __note_gp_changes() - - - - Phase Two - of Update - - - RCU_SOFTIRQ - rcu_do_batch() - - +rcu_sched_clock_irq()rcu_cleanup_after_idle()rcu_advance_cbs()Leaf__note_gp_changes()Phase Twoof UpdateRCU_SOFTIRQrcu_do_batch() \ No newline at end of file diff --git a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-callback-registry.svg b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-callback-registry.svg index 7ac6f9269806db..15cfd54c0b8808 100644 --- a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-callback-registry.svg +++ b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-callback-registry.svg @@ -1,655 +1 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - rcu_accelerate_cbs() - - - - - rcu_prepare_for_idle() - - rcu_accelerate_cbs() - - - - - note_gp_changes() - rcu_advance_cbs() - __note_gp_changes() - - call_rcu() - - Wake up - grace-period - kernel thread - - rcu_accelerate_cbs() - - - - - takedown_cpu() - rcutree_migrate_callbacks() - rcu_migrate_callbacks() - rcu_advance_cbs() - Leaf - Leaf - Leaf - - Phase One - of Update - - +rcu_accelerate_cbs()rcu_prepare_for_idle()rcu_accelerate_cbs()note_gp_changes()rcu_advance_cbs()__note_gp_changes()call_rcu()Wake upgrace-periodkernel threadrcu_accelerate_cbs()takedown_cpu()rcutree_migrate_callbacks()rcu_migrate_callbacks()rcu_advance_cbs()LeafLeafLeafPhase Oneof Update \ No newline at end of file diff --git a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-dyntick.svg b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-dyntick.svg index 423df00c4df9d5..9c6955277c36c8 100644 --- a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-dyntick.svg +++ b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-dyntick.svg @@ -1,700 +1 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->qsmask &= ~->grpmask - Leaf - dyntick_save_progress_counter() - rcu_implicit_dynticks_qs() - - - - RCU - read-side - critical section - - - - rcu_dynticks_eqs_enter() - atomic_add_return() - - - - rcu_dynticks_eqs_exit() - atomic_add_return() - - - - RCU - read-side - critical section - - +->qsmask &= ~->grpmaskLeafdyntick_save_progress_counter()rcu_implicit_dynticks_qs()RCUread-sidecritical sectionrcu_dynticks_eqs_enter()atomic_add_return()rcu_dynticks_eqs_exit()atomic_add_return()RCUread-sidecritical section \ No newline at end of file diff --git a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-cleanup.svg b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-cleanup.svg index bf84fbab27eece..860326ba11fa4d 100644 --- a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-cleanup.svg +++ b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-cleanup.svg @@ -1,1133 +1 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - rcu_seq_end(&rnp->gp_seq) - - - - - Root - - - rcu_gp_cleanup() - - - - - - rcu_seq_end(&rnp->gp_seq) - - - - - - - Leaf - - - - - - - Root - rcu_seq_end(&rsp->gp_seq) - - - - - - - - - - - - Leaf - - - - - - - - - - - - Leaf - - - - - - - Leaf - - - - - - - Leaf - - - - - - - - rcu_seq_end(&rnp->gp_seq) - - - - - - - rcu_seq_end(&rnp->gp_seq) - - - - - - - Leaf - - - - - - - Leaf - rcu_seq_end(&rnp->gp_seq) - - - - - - - Leaf - rcu_seq_end(&rnp->gp_seq) - - - - - - - - - - Start of - Next Grace - Period - - - rcu_seq_end(&rnp->gp_seq) - +rcu_seq_end(&rnp->gp_seq)Rootrcu_gp_cleanup()rcu_seq_end(&rnp->gp_seq)LeafRootrcu_seq_end(&rsp->gp_seq)LeafLeafLeafLeafrcu_seq_end(&rnp->gp_seq)rcu_seq_end(&rnp->gp_seq)LeafLeafrcu_seq_end(&rnp->gp_seq)Leafrcu_seq_end(&rnp->gp_seq)Start ofNext GracePeriodrcu_seq_end(&rnp->gp_seq) \ No newline at end of file diff --git a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-fqs.svg b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-fqs.svg index 7ddc094d7f28f5..7ef1e399c24297 100644 --- a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-fqs.svg +++ b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-fqs.svg @@ -1,1309 +1 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - rcu_gp_fqs() - - - - - - ->qsmask &= ~->grpmask - - - - - - - Leaf - - - - - - - ->qsmask &= ~->grpmask - - - - - - - Leaf - - - - - - - Leaf - - - - - - - Leaf - ->qsmask &= ~->grpmask - - - - - - - - - force_qs_rnp() - dyntick_save_progress_counter() - - - - - - Root - ->qsmask &= ~->grpmask - - rcu_implicit_dynticks_qs() - ->qsmask &= ~->grpmask - - - RCU - read-side - critical section - - - - rcu_dynticks_eqs_enter() - atomic_add_return() - - - - rcu_dynticks_eqs_exit() - atomic_add_return() - - - - RCU - read-side - critical section - - - - RCU - read-side - critical section - - - - rcu_report_dead() - rcu_cleanup_dying_idle_cpu() - - - - - ->qsmaskinitnext - Leaf - - - - RCU - read-side - critical section - - - - rcu_cpu_starting() - - - - - ->qsmaskinitnext - Leaf - - - +rcu_gp_fqs()->qsmask &= ~->grpmaskLeaf->qsmask &= ~->grpmaskLeafLeafLeaf->qsmask &= ~->grpmaskforce_qs_rnp()dyntick_save_progress_counter()Root->qsmask &= ~->grpmaskrcu_implicit_dynticks_qs()->qsmask &= ~->grpmaskRCUread-sidecritical sectionrcu_dynticks_eqs_enter()atomic_add_return()rcu_dynticks_eqs_exit()atomic_add_return()RCUread-sidecritical sectionRCUread-sidecritical sectionrcu_report_dead()rcu_cleanup_dying_idle_cpu()->qsmaskinitnextLeafRCUread-sidecritical sectionrcu_cpu_starting()->qsmaskinitnextLeaf \ No newline at end of file diff --git a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-1.svg b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-1.svg index 8c207550818f3f..6e82c8e77d8999 100644 --- a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-1.svg +++ b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-1.svg @@ -1,658 +1 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - rcu_seq_start(rsp->gp_seq) - - - - - Root - - - rcu_gp_init() - - - - - - - - - - - - Leaf - - - - - - - - - - - - - Leaf - - - - - - - Leaf - - - - - - - Leaf - - - - - - - - - - End of - Last Grace - Period - - - +rcu_seq_start(rsp->gp_seq)Rootrcu_gp_init()LeafLeafLeafLeafEnd ofLast GracePeriod \ No newline at end of file diff --git a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-2.svg b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-2.svg index 4d956a7326858e..524d88dc3d435b 100644 --- a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-2.svg +++ b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-2.svg @@ -1,656 +1 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - rcu_gp_init() - - - - - - - - - - - - Leaf - - - - - - - ->qsmaskinit - ->qsmaskinitnext - - - - - - - Leaf - - - - - - - Leaf - - - - - - - Leaf - ->qsmaskinit - - - - - - - - - rcu_init_new_rnp() or - rcu_cleanup_dead_rnp() - (optional) - - ->qsmaskinit - - - - - Root - ->qsmaskinitnext - - +rcu_gp_init()Leaf->qsmaskinit->qsmaskinitnextLeafLeafLeaf->qsmaskinitrcu_init_new_rnp() orrcu_cleanup_dead_rnp()(optional)->qsmaskinitRoot->qsmaskinitnext \ No newline at end of file diff --git a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-3.svg b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-3.svg index d24d7d555dbce6..359803836f3223 100644 --- a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-3.svg +++ b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp-init-3.svg @@ -1,636 +1 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->gp_seq = rsp->gp_seq - - - - - Root - - - rcu_gp_init() - - - - - - ->gp_seq = rsp->gp_seq - - - - - - - Leaf - ->gp_seq = rsp->gp_seq - - - - - - - ->gp_seq = rsp->gp_seq - - - - - - - Leaf - - - - - - - Leaf - ->gp_seq = rsp->gp_seq - - - - - - - Leaf - ->gp_seq = rsp->gp_seq - - - - - - - - ->gp_seq = rsp->gp_seq - +->gp_seq = rsp->gp_seqRootrcu_gp_init()->gp_seq = rsp->gp_seqLeaf->gp_seq = rsp->gp_seq->gp_seq = rsp->gp_seqLeafLeaf->gp_seq = rsp->gp_seqLeaf->gp_seq = rsp->gp_seq->gp_seq = rsp->gp_seq \ No newline at end of file diff --git a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp.svg b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp.svg index 069f6f8371c20f..a8400a356e71b4 100644 --- a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp.svg +++ b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-gp.svg @@ -1,5144 +1 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - rcu_accelerate_cbs() - - - - - rcu_prepare_for_idle() - - rcu_accelerate_cbs() - - - - - note_gp_changes() - rcu_advance_cbs() - __note_gp_changes() - - call_rcu() - - Wake up - grace-period - kernel thread - - rcu_accelerate_cbs() - - - - - takedown_cpu() - rcutree_migrate_callbacks() - rcu_migrate_callbacks() - rcu_advance_cbs() - Leaf - Leaf - Leaf - - Phase One - of Update - - - - - - - Root - rcu_seq_start(rsp->gp_seq) - - - rcu_gp_init() - - - - - - - - - - - - Leaf - - - - - - - - - - - - - Leaf - - - - - - - Leaf - - - - - - - Leaf - - - - - - - - - - End of - Last Grace - Period - - - - Grace-period - kernel thread - awakened - - - - - - - - - - - - - - Leaf - - - - - - - ->qsmaskinit - ->qsmaskinitnext - - - - - - - Leaf - - - - - - - Leaf - - - - - - - Leaf - ->qsmaskinit - - - - - - - - - rcu_init_new_rnp() or - rcu_cleanup_dead_rnp() - (optional) - - ->qsmaskinit - - - - - Root - ->qsmaskinitnext - - - - - - - - Root - ->gp_seq = rsp->gp_seq - - - - - - - ->gp_seq = rsp->gp_seq - - - - - - - Leaf - ->gp_seq = rsp->gp_seq - - - - - - - ->gp_seq = rsp->gp_seq - - - - - - - Leaf - - - - - - - Leaf - ->gp_seq = rsp->gp_seq - - - - - - - Leaf - ->gp_seq = rsp->gp_seq - - - - - - - - - - - - - - rcu_gp_fqs() - - - - - - ->qsmask &= ~->grpmask - - - - - - - Leaf - - - - - - - ->qsmask &= ~->grpmask - - - - - - - Leaf - - - - - - - Leaf - - - - - - - Leaf - ->qsmask &= ~->grpmask - - - - - - - - - force_qs_rnp() - dyntick_save_progress_counter() - - - - - - Root - ->qsmask &= ~->grpmask - - rcu_implicit_dynticks_qs() - ->qsmask &= ~->grpmask - - - RCU - read-side - critical section - - - - rcu_dynticks_eqs_enter() - atomic_add_return() - - - - rcu_dynticks_eqs_exit() - atomic_add_return() - - - - RCU - read-side - critical section - - - - RCU - read-side - critical section - - - - rcu_report_dead() - rcu_cleanup_dying_idle_cpu() - - - - - ->qsmaskinitnext - Leaf - - - - RCU - read-side - critical section - - - - rcu_cpu_starting() - - - - - ->qsmaskinitnext - Leaf - - - - - ->qsmask &= ~->grpmask - - - - - Root - - - rcu_report_rnp() - - - - - - - - - - - - Leaf - - - - - - - ->qsmask &= ~->grpmask - - - - - - - Leaf - - - - - - - Leaf - - - - - - - Leaf - ->qsmask &= ~->grpmask - - - - - - - - - - - - - - - - - note_gp_changes() - rdp->gp_seq - __note_gp_changes() - Leaf - - - - rcu_note_context_switch() - - - - rcu_sched_clock_irq() - - - - rcu_core() - rcu_check_quiescent_state() - rcu__report_qs_rdp()) - - - - RCU - read-side - critical section - - - - RCU - read-side - critical section - - - - RCU - read-side - critical section - - - - RCU - read-side - critical section - - - - - - Wake up - grace-period - kernel thread - - - - rcu_report_qs_rsp() - - - Grace-period - kernel thread - awakened - - - - - - - - Root - rcu_seq_end(&rnp->gp_seq) - - - rcu_gp_cleanup() - - - - - - rcu_seq_end(&rnp->gp_seq) - - - - - - Leaf - - - - - - Root - - - - - - - - - - - Leaf - - - - - - - - - - - - Leaf - - - - - - - Leaf - - - - - - - Leaf - - - - - - - - - - - - - rcu_seq_end(&rnp->gp_seq) - - - - - - - Leaf - - - - - - - Leaf - rcu_seq_end(&rnp->gp_seq) - - - - - - - Leaf - rcu_seq_end(&rnp->gp_seq) - - - - - - - - - - Start of - Next Grace - Period - - - - - - rcu_sched_clock_irq() - - rcu_cleanup_after_idle() - rcu_advance_cbs() - - - Leaf - __note_gp_changes() - - - Phase Two - of Update - - - RCU_SOFTIRQ - rcu_do_batch() - rcu_seq_end(&rnp->gp_seq) - rcu_seq_end(&rnp->gp_seq) - rcu_seq_end(&rsp->gp_seq) - ->gp_seq = rsp->gp_seq - - +rcu_accelerate_cbs()rcu_prepare_for_idle()rcu_accelerate_cbs()note_gp_changes()rcu_advance_cbs()__note_gp_changes()call_rcu()Wake upgrace-periodkernel threadrcu_accelerate_cbs()takedown_cpu()rcutree_migrate_callbacks()rcu_migrate_callbacks()rcu_advance_cbs()LeafLeafLeafPhase Oneof UpdateRootrcu_seq_start(rsp->gp_seq)rcu_gp_init()LeafLeafLeafLeafEnd ofLast GracePeriodGrace-periodkernel threadawakenedLeaf->qsmaskinit->qsmaskinitnextLeafLeafLeaf->qsmaskinitrcu_init_new_rnp() orrcu_cleanup_dead_rnp()(optional)->qsmaskinitRoot->qsmaskinitnextRoot->gp_seq = rsp->gp_seq->gp_seq = rsp->gp_seqLeaf->gp_seq = rsp->gp_seq->gp_seq = rsp->gp_seqLeafLeaf->gp_seq = rsp->gp_seqLeaf->gp_seq = rsp->gp_seqrcu_gp_fqs()->qsmask &= ~->grpmaskLeaf->qsmask &= ~->grpmaskLeafLeafLeaf->qsmask &= ~->grpmaskforce_qs_rnp()dyntick_save_progress_counter()Root->qsmask &= ~->grpmaskrcu_implicit_dynticks_qs()->qsmask &= ~->grpmaskRCUread-sidecritical sectionrcu_dynticks_eqs_enter()atomic_add_return()rcu_dynticks_eqs_exit()atomic_add_return()RCUread-sidecritical sectionRCUread-sidecritical sectionrcu_report_dead()rcu_cleanup_dying_idle_cpu()->qsmaskinitnextLeafRCUread-sidecritical sectionrcu_cpu_starting()->qsmaskinitnextLeaf->qsmask &= ~->grpmaskRootrcu_report_rnp()Leaf->qsmask &= ~->grpmaskLeafLeafLeaf->qsmask &= ~->grpmasknote_gp_changes()rdp->gp_seq__note_gp_changes()Leafrcu_note_context_switch()rcu_sched_clock_irq()rcu_core()rcu_check_quiescent_state()rcu__report_qs_rdp())RCUread-sidecritical sectionRCUread-sidecritical sectionRCUread-sidecritical sectionRCUread-sidecritical sectionWake upgrace-periodkernel threadrcu_report_qs_rsp()Grace-periodkernel threadawakenedRootrcu_seq_end(&rnp->gp_seq)rcu_gp_cleanup()rcu_seq_end(&rnp->gp_seq)LeafRootLeafLeafLeafLeafrcu_seq_end(&rnp->gp_seq)LeafLeafrcu_seq_end(&rnp->gp_seq)Leafrcu_seq_end(&rnp->gp_seq)Start ofNext GracePeriodrcu_sched_clock_irq()rcu_cleanup_after_idle()rcu_advance_cbs()Leaf__note_gp_changes()Phase Twoof UpdateRCU_SOFTIRQrcu_do_batch()rcu_seq_end(&rnp->gp_seq)rcu_seq_end(&rnp->gp_seq)rcu_seq_end(&rsp->gp_seq)->gp_seq = rsp->gp_seq \ No newline at end of file diff --git a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-hotplug.svg b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-hotplug.svg index 2c9310ba29bad9..cd238203d85c17 100644 --- a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-hotplug.svg +++ b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-hotplug.svg @@ -1,775 +1 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->qsmask &= ~->grpmask - dyntick_save_progress_counter() - rcu_implicit_dynticks_qs() - Leaf - - - - RCU - read-side - critical section - - - - rcu_report_dead() - rcu_cleanup_dying_idle_cpu() - - - - - ->qsmaskinitnext - Leaf - - - - RCU - read-side - critical section - - - - rcu_cpu_starting() - - - - - ->qsmaskinitnext - Leaf - - +->qsmask &= ~->grpmaskdyntick_save_progress_counter()rcu_implicit_dynticks_qs()LeafRCUread-sidecritical sectionrcu_report_dead()rcu_cleanup_dying_idle_cpu()->qsmaskinitnextLeafRCUread-sidecritical sectionrcu_cpu_starting()->qsmaskinitnextLeaf \ No newline at end of file diff --git a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-qs.svg b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-qs.svg index 7d6c5f7e505c68..f1a23d136f25da 100644 --- a/Documentation/RCU/Design/Memory-Ordering/TreeRCU-qs.svg +++ b/Documentation/RCU/Design/Memory-Ordering/TreeRCU-qs.svg @@ -1,1095 +1 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->qsmask &= ~->grpmask - - - - - Root - - - rcu_report_rnp() - - - - - - - - - - - - Leaf - - - - - - - ->qsmask &= ~->grpmask - - - - - - - Leaf - - - - - - - Leaf - - - - - - - Leaf - ->qsmask &= ~->grpmask - - - - - - - - - - - - - - - - - - note_gp_changes() - rdp->gp_seq - __note_gp_changes() - Leaf - - - - rcu_note_context_switch() - - - - rcu_sched_clock_irq() - - - - rcu_core() - rcu_check_quiescent_state() - rcu__report_qs_rdp()) - - - - RCU - read-side - critical section - - - - RCU - read-side - critical section - - - - RCU - read-side - critical section - - - - RCU - read-side - critical section - - - - - - - Wake up - grace-period - kernel thread - - - - rcu_report_qs_rsp() - - +->qsmask &= ~->grpmaskRootrcu_report_rnp()Leaf->qsmask &= ~->grpmaskLeafLeafLeaf->qsmask &= ~->grpmasknote_gp_changes()rdp->gp_seq__note_gp_changes()Leafrcu_note_context_switch()rcu_sched_clock_irq()rcu_core()rcu_check_quiescent_state()rcu__report_qs_rdp())RCUread-sidecritical sectionRCUread-sidecritical sectionRCUread-sidecritical sectionRCUread-sidecritical sectionWake upgrace-periodkernel threadrcu_report_qs_rsp() \ No newline at end of file diff --git a/Documentation/RCU/Design/Memory-Ordering/rcu_node-lock.svg b/Documentation/RCU/Design/Memory-Ordering/rcu_node-lock.svg index 94c96c595aedd8..0fea6793ad6536 100644 --- a/Documentation/RCU/Design/Memory-Ordering/rcu_node-lock.svg +++ b/Documentation/RCU/Design/Memory-Ordering/rcu_node-lock.svg @@ -1,229 +1 @@ - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - rcu_accelerate_cbs() - - - - - - - rcu_prepare_for_idle() - - +rcu_accelerate_cbs()rcu_prepare_for_idle() \ No newline at end of file diff --git a/Documentation/RCU/Design/Requirements/GPpartitionReaders1.svg b/Documentation/RCU/Design/Requirements/GPpartitionReaders1.svg index 4b4014fda7703d..983aec557a266a 100644 --- a/Documentation/RCU/Design/Requirements/GPpartitionReaders1.svg +++ b/Documentation/RCU/Design/Requirements/GPpartitionReaders1.svg @@ -1,374 +1 @@ - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - synchronize_rcu() - - - - - - - WRITE_ONCE(a, 1); - WRITE_ONCE(b, 1); - r1 = READ_ONCE(a); - WRITE_ONCE(c, 1); - r2 = READ_ONCE(b); - r3 = READ_ONCE(c); - thread0() - thread1() - thread2() - - - - rcu_read_lock(); - rcu_read_lock(); - rcu_read_unlock(); - rcu_read_unlock(); - - QS - - QS - - - QS - - +synchronize_rcu()WRITE_ONCE(a, 1);WRITE_ONCE(b, 1);r1 = READ_ONCE(a);WRITE_ONCE(c, 1);r2 = READ_ONCE(b);r3 = READ_ONCE(c);thread0()thread1()thread2()rcu_read_lock();rcu_read_lock();rcu_read_unlock();rcu_read_unlock();QSQSQS \ No newline at end of file diff --git a/Documentation/RCU/Design/Requirements/ReadersPartitionGP1.svg b/Documentation/RCU/Design/Requirements/ReadersPartitionGP1.svg index 48cd1623d4d49c..ab4a1a99037af4 100644 --- a/Documentation/RCU/Design/Requirements/ReadersPartitionGP1.svg +++ b/Documentation/RCU/Design/Requirements/ReadersPartitionGP1.svg @@ -1,639 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - synchronize_rcu() - - - - - - - WRITE_ONCE(a, 1); - WRITE_ONCE(b, 1); - r1 = READ_ONCE(a); - WRITE_ONCE(c, 1); - WRITE_ONCE(d, 1); - r2 = READ_ONCE(c); - thread0() - thread1() - thread2() - - - - rcu_read_lock(); - rcu_read_lock(); - rcu_read_unlock(); - rcu_read_unlock(); - - QS - - QS - - - QS - - - - synchronize_rcu() - - - - - - - r3 = READ_ONCE(d); - WRITE_ONCE(e, 1); - - QS - r4 = READ_ONCE(b); - r5 = READ_ONCE(e); - rcu_read_lock(); - rcu_read_unlock(); - QS - - QS - - QS - - thread3() - thread4() - - +synchronize_rcu()WRITE_ONCE(a, 1);WRITE_ONCE(b, 1);r1 = READ_ONCE(a);WRITE_ONCE(c, 1);WRITE_ONCE(d, 1);r2 = READ_ONCE(c);thread0()thread1()thread2()rcu_read_lock();rcu_read_lock();rcu_read_unlock();rcu_read_unlock();QSQSQSsynchronize_rcu()r3 = READ_ONCE(d);WRITE_ONCE(e, 1);QSr4 = READ_ONCE(b);r5 = READ_ONCE(e);rcu_read_lock();rcu_read_unlock();QSQSQSthread3()thread4() \ No newline at end of file diff --git a/Documentation/admin-guide/blockdev/drbd/DRBD-data-packets.svg b/Documentation/admin-guide/blockdev/drbd/DRBD-data-packets.svg index 48a1e2165fec72..70031cf4b0c108 100644 --- a/Documentation/admin-guide/blockdev/drbd/DRBD-data-packets.svg +++ b/Documentation/admin-guide/blockdev/drbd/DRBD-data-packets.svg @@ -1,459 +1 @@ - - - - - - Master slide - - - - - - - - - RSDataReply - - - - - RSDataRequest - - - w_make_resync_request() - - - receive_DataRequest() - - - drbd_endio_read_sec() - - - w_e_end_rsdata_req() - - - receive_RSDataReply() - - - drbd_endio_write_sec() - - - e_end_resync_block() - - - - - WriteAck - - - got_BlockAck() - - - Resync blocks, 4-32K - - - - - - - WriteAck - - - - - Data - - - drbd_make_request() - - - receive_Data() - - - drbd_endio_write_sec() - - - e_end_block() - - - got_BlockAck() - - - Regular mirrored write, 512-32K - - - w_send_dblock() - - - - - drbd_endio_write_pri() - - - - - - - DataReply - - - - - DataRequest - - - drbd_make_request() - - - receive_DataRequest() - - - drbd_endio_read_sec() - - - w_e_end_data_req() - - - Drawing - - receive_DataReply() - - - - Diskless read, 512-32K - - - w_send_read_req() - - - DRBD 8 data flow - - - - - - al_begin_io() - - - al_complete_io() - - - rs_begin_io() - - - rs_complete_io() - - - rs_begin_io() - - - rs_complete_io() - - +Master slideRSDataReplyRSDataRequestw_make_resync_request()receive_DataRequest()drbd_endio_read_sec()w_e_end_rsdata_req()receive_RSDataReply()drbd_endio_write_sec()e_end_resync_block()WriteAckgot_BlockAck()Resync blocks, 4-32KWriteAckDatadrbd_make_request()receive_Data()drbd_endio_write_sec()e_end_block()got_BlockAck()Regular mirrored write, 512-32Kw_send_dblock()drbd_endio_write_pri()DataReplyDataRequestdrbd_make_request()receive_DataRequest()drbd_endio_read_sec()w_e_end_data_req()Drawingreceive_DataReply()Diskless read, 512-32Kw_send_read_req()DRBD 8 data flowal_begin_io()al_complete_io()rs_begin_io()rs_complete_io()rs_begin_io()rs_complete_io() \ No newline at end of file diff --git a/Documentation/doc-guide/svg_image.svg b/Documentation/doc-guide/svg_image.svg index 5405f85b813788..9ea93355379c8a 100644 --- a/Documentation/doc-guide/svg_image.svg +++ b/Documentation/doc-guide/svg_image.svg @@ -1,10 +1 @@ - - - - - - - - + \ No newline at end of file diff --git a/Documentation/i2c/i2c.svg b/Documentation/i2c/i2c.svg index 5979405ad1c3e1..1aeeeefdff33db 100644 --- a/Documentation/i2c/i2c.svg +++ b/Documentation/i2c/i2c.svg @@ -1,1341 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - Luca Ceresoli - - - 2020 - - - - - - - - - - - - - - - I2CMaster - - - I2CSlave - - SCL - SDA - - I2CSlave - - I2CSlave - - - - - - - - - - - - VDD - - +I2CMasterI2CSlaveSCLSDAI2CSlaveI2CSlaveVDD \ No newline at end of file diff --git a/Documentation/input/interactive.svg b/Documentation/input/interactive.svg index a3513709a09bb8..0759a8a6626614 100644 --- a/Documentation/input/interactive.svg +++ b/Documentation/input/interactive.svg @@ -1,24 +1 @@ - - - - - - - - - - - - - - - - - - Dead band - right saturation - left saturation - left coeff ( positive in that case ) - right coeff ( negative in that case ) - center - +Dead bandright saturationleft saturationleft coeff ( positive in that case )right coeff ( negative in that case )center \ No newline at end of file diff --git a/Documentation/input/shape.svg b/Documentation/input/shape.svg index fc0af44db3f79d..9e5691869a8422 100644 --- a/Documentation/input/shape.svg +++ b/Documentation/input/shape.svg @@ -1,39 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Effect duration - Effect magnitude - Fade level - Attack length - Fade length - Attack level - +Effect durationEffect magnitudeFade levelAttack lengthFade lengthAttack level \ No newline at end of file diff --git a/Documentation/logo.gif b/Documentation/logo.gif index 2eae75fecfb965f49065c680063a40c594736ee5..78d73ddf3541ecd09c6d321255a386a00273a887 100644 GIT binary patch delta 15280 zcmZWwbyyRQ(_g_xjfRoZ9RpDi5I4FR0)mvIQypExMmLO5k#YzMQVv8!1sokBj1rV^ zlpy6K1e5ps`}@7W?s@Kc?w*V1x#vE2H-WFmvznM0YhCgH0#$)0KMPnTTGXJRA{|g% z(JRm;TMC5+002%YFgl%ndV2aF|Nlw+Cxih2_z6(@pXh&T0I)N_A(OBvnbeaE<5qAT zCRg>P9ZQ&(o3<<$*?{fwW5es_?ZFo3uf4684rp&$$O~HYjkkDtOaGNqe6HZeyE)f4 zgq_uh`Y2lxs+I5iU!e}QxgKj1fxr8ah328?N&M>ireaN~|`c^%jAHsbrZ;({+1IWkD$dqO@*gr-_JT2@EKIf;ng zQoLzN9@Zabmup-3_tTvB3aRMhTWReVs(f-}798cKTUM=M_wdwUTAABi zV@k=at*w}l(qu}znyssv8Nb&b7qQE2lP&k9?nYMeYsK}fdT`}Vd5Hx+b^TD!Q}E>a z1FqRbkai+z3?JZ`T<5>S8}1sykga{f>euDOWX0FHf=y&djKq4R_v<}F-F`k}+%_!c zsML}&t2txU$EMneJ7MQ~an_Rf);;Dg!jfYFZL*~4S`cAaO;8hEa2n-0SxkRR&}6Ia zBn_yo`hQOv=Cu6~K9>}9T&NUNW19YDH6sixvSj5wkEig=avpPq+wZ^P>&yqq=FZsnjeTgge}Ve9BOwMOZ;o1kkw#t}>c){+RJhh>#=@9>{_ulJt*03} z-$U|6)!*Sbb2HR;LSzdid?g%lQ2eFlI+X7P@uAd-JnQZgi)tUlkQn~!v^%43t zJ2_NuzQjD4l;j#{(<nDbwYSgD_PyJ(l$!z`sDB)8?;(vPfkjXzwq`Z0qAw5>KG{};YR*KvcF#>t{x5`Q)IM0`@XdIE_c?~7jk1lFoKK{r5~cJA zKMEye2rT6s6ls;oL`V$^ATNhw?jW*w22(f>MY6)bquq{|qNIP`^%Wx9XJ?Z8M8#B~ zJPMO}V&%yqn^c30jjA*Yilj&ibwDyrojGdeq>0~}$*c`~4QYt?dv%-v5^57?k0}QB z|8O!AxK@=OxrGMiXb~7lI6zE!A52Bem`7Wf`*|VX(4|3Dv#qRrUTX*+zgRC*{R&j_ zkN8>thJSi_5j_t=NoKL8^~x4fHl-{L04jh`vqz;a$aDcI=^ii6e4zq9F$&WrEtMyS zo+)1}2{;@^;V;!u;R@Jl5EBicYy20=i3Bl!#u^HY7Z3`!IPa%Nj^uSI72K-pgNfD+ z%IcD{Bo@3xH#)*=vr(y1TU8)Di2|GN@$(+8=Gt%?xMX?|=rr_8Qo1EMe8(fmoxaK~ zE7z(^49>TJiUHosUF7}H#jI_IhS04+JgbX&Hd1&Bg9;Ii>{J?zbQ7ACUU{i#-^0Rg zAG^3dPSG8A%k<@N8Rg?Z1DQ#HbCln!w(W#L$DTY3DGE%ISpD`a_ogF%0Ym*+^x(OA zwN&onKG70JH8L3Y6--(HJt{#D@R9(T{3L-Zs;JJNN=Z_Ut82zckSfO&dL@hRa5>C?T-F(f>;;x#V+7W}hx()N9`pn3DNrE)} z2{qBR<3!OD7{6sQ1(GPPWEh!;XgG`RH{CBgzCR9GJzsU2y_s;*`B3+4a>)8$3qKar zb7rvF)buAirypUB1gYAuBnI(R3(CSYX$)tfVSb=pD4p%4Y)C#dL4qTu*b$!)=os#+ z3G_h$(ZG%Z(g0Kd@Klz44FjiKgE#WWwWTLPaUqcCNPpRwwavIY z7r|U}EI%-;uV^vu9*TIatpsilR$@xd{cU!q+~!NG1Pb;KZ5GK z-|Czn4-uq7hnwL5hjb=sG5^`)RCYAyD@?30feB8C9XLZW7-T?h`Lj3j1MZUI&osfI zfZN=TgexaWSLfsAQNZ#cfFL>cfC%UpOH7OA=jMdQ*23{u>8y27pkpnY5hA*WFZlU= zrePewYB=+?U!+P#diNZwJOD0FV|qwq7M>5KqgaK*<(js#xC&T=aY6Pknab!HvtqaY zrUyvyr9Ysvg<=!>PBXjj6O7Vxv|xj3N^+3cH8;I;es zHB!V|e0w&Amd%Gs|2oeKGfmhX_8Wo0X*iYxCpH8V8-f@!c^dP3IG@uN)Jb9NL`C39 z1&*3*zoP;Y`2kRR_AnvOPcwXH*st0&EB6e?MkN%)7CGIyLr}f{CyBBjkyoW)<=aNM}r0^xd=Kun93GzQVd3O zc4Ha(alldyL+3~(h@TbHC(wsyxHMzb1L>BsD@hF6wk&VWIHU@|mK;DG46~RRppS50Eb^9% z7*LPO(htkJGZ@&9#k2Mk8OC6&%{1m&RQ~6Y(A5#pK`qloI@gsWNgr-I>7L3xc@9ZV zhEW2u3I_`thFL|7ZI_HkYI+J_K{Ci9jt3Av5)_01UBUscQJ9LTzyU(ZNqPbCw4{s< z6~#il<^kQ3@Xdg#(6A~e4hzYusy#EVC@Nzeh0%)xh!-cq9dIlSvYu^F24*UYo=Fj} z7(k2wc#LJfPG)Q)Fg~T_G?R*SuIJkkfC+S_t0d-+(O~TqmQ{=bZ+(s543o8jh>$kd zWVJyZnKktc0Mh0Fm5Q<5r@+w|h#7%x9u+)r5AvP}kq59tPyihglPd*qpGXRcWvj0* z!V5dG;%U$XF$N_%>o^TIDG5Kq)tCiVbp}FH6*yhnt6bGNM{%sRDE4(QdoTu;$^pF2 zQJ)H6Ul0Q<&>(ag$b$xw!Z3e%4CVwdWl~`i#QKI4!d_Bg z@12^rVw(kbm>(i5jd4M5$?#eX>TTbpqpTWfTj=R8Ng)EmuUH=2QP;t&#t8#(+8LSA z8UTo#Kq4N^p6F3w^@b3g(~&`k_$!)UHWL(3epGG-JgcEU0N z)>}QVcbN4;>Abk&8%Ps|3#-T}BXpx&5`K=-2mmno{k|#xgt5dW-zVm!Wf|)P=_QAD zjieYvCa6_XsKaC%-=W$9Q)IEO@OZ!*!Yu3E+H?pcQkaPt7!d#{{sA4p+>3nERzrMQ zOlMW1fVOd+^rqkx~Oj?|!YxKq2EScX$d9quewt zuGTU)lhI4shF|~&=F7r#^fF2b$MWzut6)y(HUJ=^%QQs+iPBidIc`jNp{dnZV-25m zkhpQHw$FYSWN3FB#Wt23fM30{`Y z0Y3CeyZI1ujy_CgefMq`)>+LUA@nR(=?yT2rHahb!8))`U_mzWWv+~fF3SSIp=dMD%F7oy$;bGZ3S&n72GvI0$4IfsxoCph*=4(2?esRPL?r1ICnV}pmxMGidD_}A1K zYc{tsUFHhmppvUHW$K*u3>Je|5PoPhPhA;FHVlOm7WZ5tK5SHLDk8IB`WVN`;xOqPKVy8eYf^I5>+;7U zWu{Wg0gn%pWxOJ_^pCvp4b^+I15j4o!rV{s@rAqscxU>1gI6w;y$}0h3rIKP4=#(2 zEV}v{i|>?;3(u%!-SIchl;CGOGnd_7n24Z08BH!VEp&-2KY7fpi8FhxOofDhj%ixl zTUvV4c@OcJo4@Vz1}ig(08{J2f@f(b96< z+a|1@h%p5@Y_PU* zM~J<--o4?gXIzD~!*=UwPa3CsuRAAvfhDkqXjVuDH*+V_7*q)+Au5|b$}4*RU^lwI z=%44=B11IK#NZv2W$xuoVbL*SrD@z>*gY!=cLN@wB5OW=n`$y}se0?);!+&jHbHdl z@@2zb-LXEUNz1OeDjX%{ma-KmjMEURLB5p6v%|}_T~M)GMVb@Q`}j=s>uC4x%Y@HT zQj?=1W8+=4{Z$^TqBcHB_z3~jySih@3B%F$G)YApe9}r09O!4yx8nsraNk^hXN`*8 z+ujt_W6vL$3Obnk^EUa`*O678-{apjkm#ecqKo`eU_7|C$c>-h^^~&1#VNf)6+$<2 z_l5FC()R3YmU8qyjx4X~UfH`-e%yZN{ZTw~;VKJ9waVf^R$M4=Hu)&v#^IjwHs;@t z{Yt8%aCeivVV|L;oS5{36>+a;9WO(9D+pR;$wgFtb$k-M2_+@ag{u26T%2%6;cm{ms<3`wog-^X0$6U=}h- z@PXRTG;{e{RhEV-)Zc_Zw6m|_qQ4wYuh{ZzRyJSa7e*fMHj2Vw=ZlRxUb#lOU~F$q)nDk}sOHN(=dg(4PMY!1@w*)(hp2kpGEw_B zRO33nNI_GU^@{tw#+oc4hKh^D&dpDMaP{X@p=g+Aq7&Oi)YrZGD{%h1Qo!3h0H#Js zifyUs{)-JB4NiqLZ-IV?*lScLZHt+| zXm?Lk#<3Nwa)XZvG9*(fhT(g>U1z|@CCiOJu*gCO_rPk}A+(>&KzC&<-(l*L=`I=GgWM4O#6I1X6xosX0E)iu#R_0D9$0SElV zH5+e#3h%|Hh>y>t#HAboR&3rwt69!9>7oaXZB7h!i(=<}`}Vduk*H(UxxlJm&s1W@ z#=S1DNwdf*lzzyhYRHv0LlrN371`%sP~Pyt&FA9yms9OsgT;}BonOc9^u+d~)+lyz z{h@fs0rnH$0mBDLw-mM23DI>MaU?#Lqu3$OPp6&DioYJb`jffu{yGJIRF|tF5cJW9 zZulZhob?;qfO|Rk9ot17*wpFfJFfc2_iS#!thBJV2dewTdR3Rlx114BkIm^#qToZb^3nqO6AMc3*5e zMT<*+V`2C)fBjd1WiETGn`9a*>2j4_?3G_9v^Rp4M^pK4->n&OIl`iMa7lWxrT6k1 zpxZ$&6CQbqdrkhF>!}^t85vex#-AQe+O+&hIWV1$I|+#OxOAN(I6cS0=Z{iDaH1G|HGxQuQk-)HSI{TyV5~E&z9L*)q#nKna z0{7u;G`L=BI<3c^1;1!Ty~f}rXCTPs6Jo9{2z5ksZP4kdDUvG~#v?F3O}IdFc?Szm z9U{J0hQJMkXzV^P#?y!zS$_pj-ljS(rTSaq+4GNJCjL4v{*1syg(NvI`467&HRg+< zdGa^$-#1F}%47M+B=9rJ_@mVmbo|lE_f@V(NYR=+vqz73yr4qL%A9FWyv8J`KqLLg z^bDZGbM!sXYw}lrZt9ctRf(NoMy)#d> zroiEit0}r++e8M!}@$1%Gnsfa!dKxp9!ffOD-|cgYKT*N>fYCzP-ZpRgDgr*z zRdgRymZRhhWKf9Xm?oxE#KAPL{h;+rLdTRcb9jZ@Yv0(-XE)@5fdiYuSK*SbyES z9P$shU*64>=djws-;W+Hk~`$J_RDqxsj&9W{)#@T6%ODKj-^*6ty?)eGjmuy0Gm|g zdU80zAg*5}=Mvm=o=pqd*!Ct%yP1ui*`J|{Z{&^=W9Iurfm$CJo9Rh98B?Vwc zX-Gz$C6@^${`^I1n!celJpAg^)A>%5v782H`wt!r7W1fFnJB%KU{CJS_XOVnA;9Ul zm$)X*kl8KER2gAt?osx6C>EQ3pjVf$9npL__|5f&af6l$7$T%>Tri}7sQ!rwT)huljvthP@dQAz28xFa@<4zulH-Bu_7bDD8m zmD~F*00}hp{?7#djt9VJ*x>nLU1%Y@ZvKx?YlH1whlv3!-aEY>OiCAyv#M*|Z_ZcG zHtONq8eWR+@IP#Drq3%$M&8th1}E`srvfyPA~$sxB;P$)KJJGt<-!E1l6{ zh-rNNskylwl7QS-mR_<)5#gP|$jA9tUR`J7bJgpUG~ zI-{mhF2DAcWywQ85}hsZZ7c+Eh3^r>J|E8)j)Fi-Eu6s|?FPn|iUQst~ z;ohh!E(ASA!<>VGvrtY%gu2@%qMC$%SWv;RwhY-&L#A?L1*fNd;_f(p^P0GiW*Zom zu(cjtc)0x^P?qv;?Rlsi`0sD9WC=viAE+6sBzdZqaQ>~7zkoXt#7BZuH0a)W-gFxK zhEs=(wa}dS-MNCx5t1tf6f^mex>+;Y!HUorr_``husafDg=EZJO~RF>58`#&ZVz{p z*GgEtfqXE{w)2{&(=TR=-YzI~d$6?6DyBy|rFurI?>+@9V_x&#$&90=fpBRtB}qcR z$vcX#J?B%rX$-P3;2E8}N=`1tPYe}ZWql0j0@{O&XcKWw5Ou0yJk@l*#G zlkto+eZIY~lbu`peJL;w?+<;gSZ9RkQE4Rhk@PBe)CF`C1Lq-*IDmTzL{=_!=D|Z2 zLVCJRq6Ca!E(eVxLKj=1-Wkwauh14mkU2g1ifOMr($KKR=vSQn<##PV%*k>yjbJiC zK^Ll|i~ed+YBCRh4l`IVM+y`}F`a4N(P{h1DQd7p7W$J7I-bFcXmG5+=$K<9(3T$B z(LL5{WbxBL62~Yn_a;4=(ZE&T*^s<7)%Yu}-$bfqOaUqfBdC-0x9dt?I69ZE=}D(J+#Cu1_g36 zNQ$l*QfQvL1=%E-y`hRA^vV+?~c?421RSqTR8iZ;mGV)QbFN|!(aNDK}b$f#X%0E%)J zLU|X>b5RO|+?0dJo*KXri8d61%_&5lPVl1xdcz4rxmM)5y? zt9evgvN#QEc;^UFp6u0`H>|&6B9DYn(*kJ2L8hrT(P@TQD|aHJtW&Z+3ZORJbITv- z<)3(~1K{aTxIkpID`s@ZSvblu=9M!J2tx%7LD4gf_!>4@B#8YqnR_cqMJrLh1jIU@ za>ajg*U})taxzRSaerob)!z6a-cFN!t(CpAW$blRC^kh5)n{Fp>QXv7(P(O24E-$( zW!)I|j865QPj=A)pA|E<%vj0NlJqek6(_JP^}X5Y#FZn6Lr1DNNq2uY=}i4}Jfvhm zcuDD_6W9U)+-+pMNt)EXV3^mKhKRqy;{X;E8T?jmRMpT#C>|4fqa}>DGk&Z~u#6tG zD#^Ksd>ltMp6F)?*3i5u2mZD=ns{WZ@t@UPpfNv?~#KKmvg3i${tgpevhn-# zxf>2z6=rf;gh;1uD~jcl5LHv?Gd)pG+tD9Q-qq{Ob;Uv{B;F7hsAFnTh{+!*u9f}|L%3!_~bwY zV}#Lr?~IhK#bo?dWrv5y01Z09#c6TNGVMwo#^v$5?AZ&$uKk?VEPir2si^=S5&LxM z_bcJfzh;KNjhSjSX|0B-Vi(SPt}Xrw8+*z25r9b!lVd!_4X4f%&a~-bmP-qFEEzit z9UpW}=*gvRyr1yaTHLym_P2Q1ug?8z?zoL9V}dfH%Pb?_?XJ;KXRC4NmE>GzI2{~% zzCYB+@b{7X?EB$BA2(;EaYHG++^)BSmPmFbQ&F9X(BTyDX<8tG;EBBcq7K{`a_;Wm zYj=)}Sd1LQGa)C=4&s^r+mBV*gKx@N z4=r9`Z}M8)o_{gx5mDVi?_X=5)g2v62_^L?+UMTG8+g*cTAr@wapD+lIv64^r)y%< z%o392Wft}7Xr(VcDj8eZG*g4LET1S_4M>?sRySd%C%LTGE_{IT{czd;GekeK{dCY~ zwbtq}tr7Wr<-3Ll*uqOGPIXZs9iT-3Q$9%iE43!*HMekd`K(v&5-jSddKuUYB{X?a z*DI;`w2eLUvcJB!;U0NPR%*Vz3xQ+b$JPjc)ap(b@2AWQ58UY3X;JU=371*p-fuY_ z1#tG6c6hn%X3uQ&5$sdgkmTfm;DW$EA2_iLlF{qlrVM7?zGw3HXn{Cz&z@bvy8G>B zY}k(7em`}3)^@$GgX=@vVCNbuff-Ir@`T}ya~n5#;HL7HgWiiRLrTV+L1W>4lZm`N z|GK*Ggbm8iyAgI$h+$=M|22c~bWRjQK=gV%Lt1tvqui4%Sho%FiwSXmTAst6RoO46 z+>67|{;AzYVya=S|5q!mbZNsim*wZI(fy)cGYl-Rt#&@Ye6ylH=ybl=h}hH{=roB3 z|4dBDL)O;}a}uDk(cVUNRQUvOmTy|q*mmIXRx{tC=5XLe5$n#J&9KTK>o*>2hm^4? zn1#P>m9X)l(pPX$|E9vlym)=%_w%~b&+U!7Yaqd1q94x!m~PGW7&*!ryTg`uxrw{-9E*7QdGpY22Li9t;*+4?7Y5mPg7TI?j{m@KmEV`7 z>2$(<-}<_6H28FX&N79e2yOd%W#|a`eU8v7U@`DO<^> z)2DW4ScYaxm8?%HcZ!yui~24opP$G+1ved%UqD`Q`7w zJ-z$2qLhBB+J1c}KoOfPF*oOpg|fJX7F0S}n1t0jxSdEZT<^RcQHKA(1OJZwpziS> z3^37_H9WMt_{pOt(q~uWclU-~LhtY7XCI}#t_}J`LwALrjmZy>cc2o_oqnHJ+pnlg zl^X_b*rywIFc?wY>z9LNBc`v{7`<)_w|E#SI2dwvz-is#=i`{a@^=onjMU}@AB4;e?43Hhh+8veba++cf z+wgEYnzjn7zB17oVR@;$+xmH!@N~4Y%TMPox}4R1y5}O~VVdWkO~(EUxU_|n!ycBeSUb!o<9C}r29kC|DD=7@ z%|AMSvghWnr$zm;SW8NM^D@Zr`IWtN>`J=DyB)0Bedz@G%Pu6V z%*>OILC!z@0siivt%q@#3^_T5$}7`D-Hi3VN8j4a&hCtRl@0Ekhoj4_UoMWTVaMm& z7b1CUH%BL8^ZCtR|JlIn2wfaL`9nQ-`}>DZpSG|+vu(mGA$7{>=ED#cxg<>ajNB;^ z5e8k&6S=YVmIHBgfez6azU~NMOmL0#b?9e@!2Dfy(PaQ1cg8p%$)|)LkaangReanI zAqGHaFeu7M&C^$n@|ic)I=9H4-NjdhPsLv_^%ip}h-G-uAKLJlS)oP{ie%(kExBsYF75!{m9# zr&+vS7jJ&*=sf&k9_(-H(VwApH&4o+Dr)U-gg*PABz*Pjdq6_jHJ*C=$2?b@JVuL$ z=&BD#p?0;y|X}w*KltmxUz$Joo zmwxelb#C#PeG(xcI}zJo(VYD{;jirvY;VCUlfkd^-jNloYC+3w0i!%Ivf}yU)*S~X zIdB%yzl)`Gn};nj7@Lga3sbrnw1c6vQDf-13<8G~PUXd4b8-yoxz<8gsO zt2EC8ObzeWXRqae^*Kx17u+a^KomJs`ks^4nal(1QgT&@xEMA=qmopWp*ZJ{$rYL| z4ym}qjK*uM*{}=D7bjX&@(Jc0r0|^bD`?S0c|ippOwtP&&kb1p z&~%QuS(;M}MA=--^I#tAAg~eq6|2U9N;ZG+qA*h?ZApnZfS9VAGF6wj7ws5vAZ81{ zQTH#(-<0=Q`oZ%jYT6tR|2);&PB3QJR>I4-7&7CpsamyU-QlmQug2dKh$TH`j_}^I z`SGzB*oL2cLTcF1nBKUAi0(~m0z#u?ngj0Y6A-DUMZ?M?V+^_B(Qf=(UYJrv!5ow8 z0UH>;M1JK&cxJJ`c@5$BP>r3vvr2V!Nb#Ay4>vN9!{p=l4Q|px)lfh#@6#;5ZX+$H z_cC~6a!)G7EdAKD$Nvin{A`N!ovD0aEa1L7X0mRp?Z>sT>D;>5Hrf26kXTwR)Fa5o z{Ach%x`mv<`Q|&Rf(`}GC4ZjW%8_I@b=FsV>;EyYaql?nQd7HRxK1F?VWvjVVztJG zi`tS#nz$~>Oq{ijYp!p$Q~bLY{)6nEl}|R_?bDlD^Xpz+kF0BIqJbT4W(&7&bM4E7 zJyV)$ud;p;iG8wvN$kZK{troTG>LzLR5twY_=THDYPPm z!!KUX5Eho?DI0FIJdeD273V|tnMbA_I>2| zo}K9Nnb8IZy3n|a-jqvIv|mZlazZn{WX;oxyiQ)*6$1s4jKX-({9k97jOt_GgHP@^ z&t1ruvjAO({H&?;F%K;?4_?@piNWW-dT;0eJ+f|Jm9Fn470I6yuz7gZVA%K76X7}e zKDQatblBoFZ=jSuA{3PqVY&a%cj_^UB@%dJ5PRu%Xe#-MS8d2x-$m(H{>9c_g|@BS ziM95!KD}S6^ImUOzv>&^`=u$uBmETl{LHJM_@dcBd8!m%yX;Gme_9D!pkysRux{{j z_V;ufswbN+Szmtq09GAoBy3@-@WojyhpV5&T;E|N>ZR59B5?1~Rc4>4lDVs0UG~|> z+u0YtROQP5H|qMuFUXMW9?Ab{sfp-gs-58#vKg&IU2o&u?YBGk`QnrM^CRyxtdY6w z%ZKc9!?oNJlyp+%fQXUu3fC3~9ya`l4q`!}Am#K1j#rP^XNmO@^vKcQspo^)9>`Vc z9UEjS)!_dHH3cm&zBK#fSnnoh5TV`I^cs|J2djFt8x49a8!{Ch+2>L}STKD!wZYzE z&mb{RObsu2q@_tTr0k0`x%yYJE%N%G@r0)WBq(dGxT#&F@qPCx(Gq!l`t^HV&RInM zn1bLcrL6exWuK+3TM=a>i_Bt+iZ|;%GK@cL{PzUwFIV|BAY7#A{b9r%sr$XBon&QZ z&Scef0H1$SA6uGark86^zidJnPfiusilc|g&)-^s#I2U;#$tOEY96D1w=r-7dd1tt zm-tO*J)e<0Ohw87ze(V~s?Z)^{Q|2g5PUIk+ESNgC@ku4J@p7P>n&5PcRS4OdyWeg z#Kn244+|!|G8zW43T^eX-y=hGf=Nu-(dWsNZT2E`F}BqugN!U-&f(~(P0e6_7gnbF z*|JHI(F1+ryVw54eLn>E)moj6&T1L2m^%ykP}3|cGfJpO={@*P>1HEUU)s;_QjZTQ zUzz0oqI0Z3Tw;*q5jH*VkNJ@&DSZ^wB>bd>>)o$_bmu-(Cp46VlaD**7 zmMug!ndbl5lf1vxS#U2r)UJ8a+@W6hY3RM-@RYeORLn)vn0@D;LQ+6yVsFb4K+qn@ zB$1H_5V@!|WmAp^d(>f5QHa}W;up1LZxnTdw#Bn6-%AKKEl3>@YvY`-nfdIO2y$=I z!m47~B8i>rn;WlcOg2qo9=Ql@iJCly`;A6N1?zUqiszl5nmg1h)%^EmKyXToQDj~0 zYo1M@d?PjdKsrfq9R0b~>WF#;Zv^gaKr z-j`7NlAv6V!An%Tq9?57&H7W!V-2D4HpC(1V|&fkAVFHQ2N+T3b-WM>_*b+-@ZP#2 z@R0U)=T#*>wJWz^wsPTX|8eBH~>l6CyLVvh#CV}j+pSH)F0vi_I{A);-oSeTPeWZQhd%FjmUQzvRq_({a6@S z!T*PW$U{oxs0VQtim*ge&Yz;CKq4%QAi?z&S+W?*zjJ_5_wxRG!v*4n70Dw@1B($r zFupZ^IA|rng0M+I*6&HSF%}Dl}z9O5wydr73x5mzN^aX;CX^Q9!$&R4DTvh~#z;w3OORAfk6<7O2E(Q`rj-8j&C(A96G0;kcSv`4z&)k{sK=iO+WuMr44p+@t2WCo<i)W+t6lYJz-+Hz_)_uWmR50=VYb!G0^2oa1rYv2SO87A zt`9BYtz?K2&Pe2Sdf4-`*Psv!y8{&H2mEABR3HIe@AUpeL7!KZi+$p|Q0P7Jz%`R7 z{?8*7iUnON1gKG@EcrkRIJ8GI5TFGFm?mF3=)Lr0P1<*rt9wmGq3R6nK<;N+__(Y# zd+q!6qTljo4@M?al|?I+weUbGa*~Q~4_xenQx;ZU*J_%#SERmIz}r)Od_WOp3F;Mj zZ0o$ZBz<_+kCJ1?g)$`L+O15n65hV2r&eTYcJ@k6A=KKgK7>@Ej zsL{D5!@YmbUO+nYw4g{J13R2py>` zlzhDoK-zk~+Kfw4#$RmQL6}Nex1%R~t&4o4eRwyq)XReQFRI@@O^(+Fiq?HmIRFBQ zC{N(o*4kZtrhNh)!2whh1F6#WC8GT#J26sqOBp=LF%RZauGU@FA7nnz)ZU+zUV%LaGh6u-(7sdIhI=i$@=N7G4gKVUoQ~l zXLZ4@8r#*aws1mq*_V2*mc$IcUcr(&PwgHlSVR2sS1Eh>*4QL%1TYFDulqrgS7yU@ zb^4L>V>Ae$FXOE;h~}#U94Gobkyv6V0Wob65dA16`yQ!zkZK$8X1iqTD<9wSfeU~$ z@UKq&a(uas)SX_@BPkh~B-wHqegZ&;o{y`2cMv>Dn*9K7F%&|HK+xywEfi_?H@#ku67Empf+@bK zPj>F!IqBjkm-8Z*=PMc}oqZ3|kx5dZ_M)}%XmJ7|eXwyx!4|9(EUcx}-wNsnHITU) zG{h96-1%&}F&Rklk9vL5(UijiC9g*^igIWr4m7L3J|7*prX0{?shm-16wF0n_D&Sf zNt71reSIxpqSZ%qu)$b69i!08vWM1j_rCjI3iWQzY%70xlEPcl$De^#=|4-%5X2`v zyQM5e>C4pbZP{esaPju@lZ=m3G}pkq#9XYc)2e^PNZ|}`M)U(= z1eCb{-ZNu`c4wv5gQV790ojkd@OSmL$)DCE_0C0Pw!MhZGt)~wv7*4nA2`U6Q zhd)gpBs0G$g={+1^L@IkFWI)n;6je7*Z*+k{B~lvjhGo7!}~+iI;-pldR{mlPT#U+$n+(Hltw zgfJR;+9I==Cl5&C#XF%9!vyjCTffa4<2{qONe9Bo^nVI9DhB}W3^Yg41H!G=GUmE3 zTL2Ie$ej;Vq$M6$Cutal+%+dd7LqhjAkpw=;xhyU0*qK_)z}1M^$5HgfM2a>_A`aw zrT+c5Zn6s{i40NpzqGu(=nXIK)kv;84gAb6hT=o28ENCsTDUoyFS8$_r$Fkmp@NYu zN114Z;i0z8p=LAkSDu`Hwu-)NIDd8+TR-4s7Mic*J2>MTD!GnOst@C!@T26p4GCI` zKq)|CJl8EV13F*WGyUyagzj_H4GlCmm`MW#Cga!$6f2=5>u=#~yZig*;Y<51Mtw)= zzTt-B_(V7=fNut1R2j_M2ozO1v~xuB9w9lSzb9BbB6I<^eMe2dWaZ}C5dQkY#TN{R zfb53hd~HYY6m%gd)bV*(a9}vhsYgr_;5-K~)r?Tl4u_z^m(qIp@1T))Zo9H;yeb9B zy}SU*0J8goxc!q58j;{=#mzK;*e1o}`ExwsOFBwhHpJu*2qL2S{Pmq{kI$?lXA=^6 z0ll1ZeZJ=+b;^3-R1K@R2KXIxp$Y++@yuiBN0{KTpDKY@7o`pB?cE2QYkL9ML4_0n z#1P>B9_{>wzPQFk`ei@Uwux#UkJQe7hD;$KiKyH8Cru!b817|kH97KkyYDkiwqC&( Pcix;t-i|~806PB%d|GPU delta 15287 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 WjHT#a(o%7K_w!PUUN`~@82u0Oh70)s diff --git a/Documentation/media/typical_media_device.svg b/Documentation/media/typical_media_device.svg index bfd5c7db3b0011..ca862e1435abd6 100644 --- a/Documentation/media/typical_media_device.svg +++ b/Documentation/media/typical_media_device.svg @@ -1,116 +1 @@ - - -image/svg+xmlAudio decoder -Video decoder -Audio encoder -Button Key/IR input logic -EEPROM -Sensor -System Bus -Demux -Conditional Access Module -Video encoder -Radio / Analog TV -Digital TV -PS.: picture is not complete: other blocks may be present -Webcam -Processing blocks -Smartcard -TunerFM/TV -Satellite Equipment Control (SEC) -Demod -I2C Bus (control bus) -Digital TV Frontend - -CPU -PCI, USB, SPI, I2C, ... -Bridge - DMA - +Audio decoderVideo decoderAudio encoderButton Key/IR input logicEEPROMSensorSystem BusDemuxConditional Access ModuleVideo encoderRadio / Analog TVDigital TVPS.: picture is not complete: other blocks may be presentWebcamProcessing blocksSmartcardTunerFM/TVSatellite Equipment Control (SEC)DemodI2C Bus (control bus)Digital TV FrontendCPUPCI, USB, SPI, I2C, ...BridgeDMA \ No newline at end of file diff --git a/Documentation/media/uapi/dvb/dvbstb.svg b/Documentation/media/uapi/dvb/dvbstb.svg index c7672148d6ffa8..cdecc79c3f9541 100644 --- a/Documentation/media/uapi/dvb/dvbstb.svg +++ b/Documentation/media/uapi/dvb/dvbstb.svg @@ -1,43 +1 @@ - - -image/svg+xmlAntena -Frontend -CA -Demux -SEC -Audio -Video -TV -Decoder -Decoder - +AntenaFrontendCADemuxSECAudioVideoTVDecoderDecoder \ No newline at end of file diff --git a/Documentation/media/uapi/v4l/bayer.svg b/Documentation/media/uapi/v4l/bayer.svg index c5bf85103901f7..dfba47dd04177e 100644 --- a/Documentation/media/uapi/v4l/bayer.svg +++ b/Documentation/media/uapi/v4l/bayer.svg @@ -1,56 +1 @@ - - -image/svg+xmlB -G -G -R -BGGR -B -G -G -R -GBRG -B -G -G -R -RGGB -B -G -G -R -GRBG - +BGGRBGGRBGGRGBRGBGGRRGGBBGGRGRBG \ No newline at end of file diff --git a/Documentation/media/uapi/v4l/constraints.svg b/Documentation/media/uapi/v4l/constraints.svg index 08f9f8b0985eb1..aac054a91dad73 100644 --- a/Documentation/media/uapi/v4l/constraints.svg +++ b/Documentation/media/uapi/v4l/constraints.svg @@ -1,37 +1 @@ - - -image/svg+xmlV4L2_SEL_FLAG_GE -ORIGINAL -V4L2_SEL_FLAG_LE - +V4L2_SEL_FLAG_GEORIGINALV4L2_SEL_FLAG_LE \ No newline at end of file diff --git a/Documentation/media/uapi/v4l/crop.svg b/Documentation/media/uapi/v4l/crop.svg index 32d72598d1359c..15e6aa024582c6 100644 --- a/Documentation/media/uapi/v4l/crop.svg +++ b/Documentation/media/uapi/v4l/crop.svg @@ -1,290 +1 @@ - - -image/svg+xmlv4l2_cropcap.bounds -v4l2_cropcap.defrect -v4l2_crop.c -v4l2_format - - +v4l2_cropcap.boundsv4l2_cropcap.defrectv4l2_crop.cv4l2_format \ No newline at end of file diff --git a/Documentation/media/uapi/v4l/fieldseq_bt.svg b/Documentation/media/uapi/v4l/fieldseq_bt.svg index 1dab1cd1b6de93..9709890aee7e04 100644 --- a/Documentation/media/uapi/v4l/fieldseq_bt.svg +++ b/Documentation/media/uapi/v4l/fieldseq_bt.svg @@ -1,2621 +1 @@ - - -image/svg+xmlV4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_ALTERNATE -V4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_BOTTOMV4L2_FIELD_BOTTOMv4l2_buffer.field: -Temporal order, bottom field first transmitted (e.g. M/NTSC) -V4L2_FIELD_TOPV4L2_FIELD_TOP -V4L2_FIELD_INTERLACED / V4L2_FIELD_INTERLACED_BTV4L2_FIELD_INTERLACED_TB (misaligned)V4L2_FIELD_SEQ_BT -V4L2_FIELD_TOP -V4L2_FIELD_BOTTOM -V4L2_FIELD_ALTERNATE -V4L2_FIELD_INTERLACED / V4L2_FIELD_INTERLACED_BT -V4L2_FIELD_INTERLACED_TB (misaligned) -V4L2_FIELD_SEQ_BT -V4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_BOTTOMV4L2_FIELD_BOTTOM -v4l2_buffer.field: - +V4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_ALTERNATEV4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_BOTTOMV4L2_FIELD_BOTTOMv4l2_buffer.field:Temporal order, bottom field first transmitted (e.g. M/NTSC)V4L2_FIELD_TOPV4L2_FIELD_TOPV4L2_FIELD_INTERLACED / V4L2_FIELD_INTERLACED_BTV4L2_FIELD_INTERLACED_TB (misaligned)V4L2_FIELD_SEQ_BTV4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_ALTERNATEV4L2_FIELD_INTERLACED / V4L2_FIELD_INTERLACED_BTV4L2_FIELD_INTERLACED_TB (misaligned)V4L2_FIELD_SEQ_BTV4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_BOTTOMV4L2_FIELD_BOTTOMv4l2_buffer.field: \ No newline at end of file diff --git a/Documentation/media/uapi/v4l/fieldseq_tb.svg b/Documentation/media/uapi/v4l/fieldseq_tb.svg index 041071e43f9bb0..2b4703e5f62820 100644 --- a/Documentation/media/uapi/v4l/fieldseq_tb.svg +++ b/Documentation/media/uapi/v4l/fieldseq_tb.svg @@ -1,2618 +1 @@ - - -image/svg+xmlV4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_ALTERNATE -v4l2_buffer.field:V4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_TOPV4L2_FIELD_BOTTOM -Temporal order, top field first transmitted (e.g. BG/PAL)V4L2_FIELD_SEQ_TBV4L2_FIELD_INTERLACED_BT (misaligned)V4L2_FIELD_INTERLACED / V4L2_FIELD_INTERLACED_TB -V4L2_FIELD_TOP -V4L2_FIELD_BOTTOM -V4L2_FIELD_ALTERNATE -Temporal order, top field first transmitted (e.g. BG/PAL) -V4L2_FIELD_SEQ_TB -V4L2_FIELD_INTERLACED_BT (misaligned) -V4L2_FIELD_INTERLACED / V4L2_FIELD_INTERLACED_TB -v4l2_buffer.field: -V4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_TOPV4L2_FIELD_BOTTOM - +V4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_ALTERNATEv4l2_buffer.field:V4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_TOPV4L2_FIELD_BOTTOMTemporal order, top field first transmitted (e.g. BG/PAL)V4L2_FIELD_SEQ_TBV4L2_FIELD_INTERLACED_BT (misaligned)V4L2_FIELD_INTERLACED / V4L2_FIELD_INTERLACED_TBV4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_ALTERNATETemporal order, top field first transmitted (e.g. BG/PAL)V4L2_FIELD_SEQ_TBV4L2_FIELD_INTERLACED_BT (misaligned)V4L2_FIELD_INTERLACED / V4L2_FIELD_INTERLACED_TBv4l2_buffer.field:V4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_TOPV4L2_FIELD_BOTTOM \ No newline at end of file diff --git a/Documentation/media/uapi/v4l/nv12mt.svg b/Documentation/media/uapi/v4l/nv12mt.svg index 067d8fb34ba27d..048b85d4376be3 100644 --- a/Documentation/media/uapi/v4l/nv12mt.svg +++ b/Documentation/media/uapi/v4l/nv12mt.svg @@ -1,477 +1 @@ - - -image/svg+xml0 -6 -1 -7 -2 -4 -3 -5 - +06172435 \ No newline at end of file diff --git a/Documentation/media/uapi/v4l/nv12mt_example.svg b/Documentation/media/uapi/v4l/nv12mt_example.svg index 70c3200fdb3288..e2f238c3159817 100644 --- a/Documentation/media/uapi/v4l/nv12mt_example.svg +++ b/Documentation/media/uapi/v4l/nv12mt_example.svg @@ -1,1616 +1 @@ - - -image/svg+xml0 -6 -1 -7 -9 -8 -2 -4 -3 -5 -11 -10 -12 -18 -13 -19 -21 -20 -14 -16 -15 -17 -23 -22 -24 -26 -25 -27 -29 -28 - +06179824351110121813192120141615172322242625272928 \ No newline at end of file diff --git a/Documentation/media/uapi/v4l/selection.svg b/Documentation/media/uapi/v4l/selection.svg index 59d2bec9b27809..f87c7a508d56d9 100644 --- a/Documentation/media/uapi/v4l/selection.svg +++ b/Documentation/media/uapi/v4l/selection.svg @@ -1,1178 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CROP_DEFAULT - - - - COMPOSE_PADDED - - - COMPOSE_ACTIVE - - - COMPOSE_DEFAULT - - - COMPOSE_PADDED - - - - COMPOSE_BOUNDS - - - - CROP_BOUNDS - - - overscan area - - - CROP_ACTIVE - - - DATA SOURCE - - - - DATA SINK - - - +CROP_DEFAULTCOMPOSE_PADDEDCOMPOSE_ACTIVECOMPOSE_DEFAULTCOMPOSE_PADDEDCOMPOSE_BOUNDSCROP_BOUNDSoverscan areaCROP_ACTIVEDATA SOURCEDATA SINK \ No newline at end of file diff --git a/Documentation/media/uapi/v4l/subdev-image-processing-crop.svg b/Documentation/media/uapi/v4l/subdev-image-processing-crop.svg index 59321e09929d76..a08a0640c66b33 100644 --- a/Documentation/media/uapi/v4l/subdev-image-processing-crop.svg +++ b/Documentation/media/uapi/v4l/subdev-image-processing-crop.svg @@ -1,312 +1 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - sink - crop - selection - - - - - - sink media - bus format - - - source media - bus format - - - - - - - - - - - - - - - - - - - - - pad 1 (source) - - - - - - - - - - - - - pad 0 (sink) - - +sink crop selectionsink media bus formatsource media bus formatpad 1 (source)pad 0 (sink) \ No newline at end of file diff --git a/Documentation/media/uapi/v4l/subdev-image-processing-full.svg b/Documentation/media/uapi/v4l/subdev-image-processing-full.svg index e739c54fbbfb29..45c0e55adb5c10 100644 --- a/Documentation/media/uapi/v4l/subdev-image-processing-full.svg +++ b/Documentation/media/uapi/v4l/subdev-image-processing-full.svg @@ -1,752 +1 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pad 0 (sink) - - - pad 2 (source) - - - - - - - - - - - - - - sink media - bus format - - - - - - - - - - - sink compose - selection (scaling) - - - - - - - source media - bus format - - - - - - - - - - - sink compose - bounds selection - - - - - - - - - - - - - pad 1 (sink) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pad 3 (source) - - - sink - crop - selection - - - source - crop - selection - - - - - - - - - - - - - - - - - - - - - - +pad 0 (sink)pad 2 (source)sink media bus formatsink compose selection (scaling)source media bus formatsink compose bounds selectionpad 1 (sink)pad 3 (source)sink crop selectionsource crop selection \ No newline at end of file diff --git a/Documentation/media/uapi/v4l/subdev-image-processing-scaling-multi-source.svg b/Documentation/media/uapi/v4l/subdev-image-processing-scaling-multi-source.svg index 401d1456958c5a..580d9a082cd9e3 100644 --- a/Documentation/media/uapi/v4l/subdev-image-processing-scaling-multi-source.svg +++ b/Documentation/media/uapi/v4l/subdev-image-processing-scaling-multi-source.svg @@ -1,550 +1 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - sink - crop - selection - - - - - - sink media - bus format - - - - - - - - - - - sink compose - selection (scaling) - - - - - - - source - crop - selection - - - source media - bus format - - - - - - - - - - - - - - - - - - - - - pad 1 (source) - - - - - - - - - - - - - pad 0 (sink) - - - - - - - - - - - - - - - - - - - - - - pad 2 (source) - - - - - - - - - - - - +sink crop selectionsink media bus formatsink compose selection (scaling)source crop selectionsource media bus formatpad 1 (source)pad 0 (sink)pad 2 (source) \ No newline at end of file diff --git a/Documentation/media/uapi/v4l/vbi_525.svg b/Documentation/media/uapi/v4l/vbi_525.svg index 6cd5def22b1fb7..2df0691da0c8be 100644 --- a/Documentation/media/uapi/v4l/vbi_525.svg +++ b/Documentation/media/uapi/v4l/vbi_525.svg @@ -1,821 +1 @@ - - -image/svg+xml(1) -8745691012113226312622712702672682692722732752742662652632642624923156101112784923156101112785242615252622222232328522286231st field2nd field -874569101211322631262 -271270267268269272273275274266265263264262 -492315610111278 -492315610111278 -524 -261 -525 -262 -22 -22 -23 -23 -285 -22 -286 -23 -1st field -2nd field - +(1)8745691012113226312622712702672682692722732752742662652632642624923156101112784923156101112785242615252622222232328522286231st field2nd field8745691012113226312622712702672682692722732752742662652632642624923156101112784923156101112785242615252622222232328522286231st field2nd field \ No newline at end of file diff --git a/Documentation/media/uapi/v4l/vbi_625.svg b/Documentation/media/uapi/v4l/vbi_625.svg index 7aaae5ec487828..b49f2a867616ea 100644 --- a/Documentation/media/uapi/v4l/vbi_625.svg +++ b/Documentation/media/uapi/v4l/vbi_625.svg @@ -1,870 +1 @@ - - -image/svg+xml1st field145678323123113102214567832625624623223086213096222nd field -(1) -7654323133123113363353213203193183173163153143133123111822233093093103102433723232424 -1st field -1456783231231131022 -1456783262562462322 -308 -621 -309 -622 -2nd field -765432313312311 -336335321320319318317316315314313312311 -182223309 -309 -310 -310 -24 -337 -23 -23 -24 -24 - +1st field145678323123113102214567832625624623223086213096222nd field(1)76543231331231133633532132031931831731631531431331231118222330930931031024337232324241st field145678323123113102214567832625624623223086213096222nd field7654323133123113363353213203193183173163153143133123111822233093093103102433723232424 \ No newline at end of file diff --git a/Documentation/media/uapi/v4l/vbi_hsync.svg b/Documentation/media/uapi/v4l/vbi_hsync.svg index f8e979ada7e330..ad7034cd83fdbd 100644 --- a/Documentation/media/uapi/v4l/vbi_hsync.svg +++ b/Documentation/media/uapi/v4l/vbi_hsync.svg @@ -1,321 +1 @@ - - -image/svg+xmlBlack LevelSync LevelWhite Level -offset -Line synchr. pulseLine blanking -Line synchr. pulse -Line blanking -Black Level -Sync Level -White Level - +Black LevelSync LevelWhite LeveloffsetLine synchr. pulseLine blankingLine synchr. pulseLine blankingBlack LevelSync LevelWhite Level \ No newline at end of file diff --git a/Documentation/media/v4l-drivers/ipu3_rcb.svg b/Documentation/media/v4l-drivers/ipu3_rcb.svg index d878421b42a013..03911f6707889a 100644 --- a/Documentation/media/v4l-drivers/ipu3_rcb.svg +++ b/Documentation/media/v4l-drivers/ipu3_rcb.svg @@ -1,331 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/Documentation/networking/tls-offload-layers.svg b/Documentation/networking/tls-offload-layers.svg index cf72f05dbb2143..f880231752a380 100644 --- a/Documentation/networking/tls-offload-layers.svg +++ b/Documentation/networking/tls-offload-layers.svg @@ -1 +1 @@ - + \ No newline at end of file diff --git a/Documentation/networking/tls-offload-reorder-bad.svg b/Documentation/networking/tls-offload-reorder-bad.svg index d107aaf0f71ef9..9924e81085de51 100644 --- a/Documentation/networking/tls-offload-reorder-bad.svg +++ b/Documentation/networking/tls-offload-reorder-bad.svg @@ -1 +1 @@ - + \ No newline at end of file diff --git a/Documentation/networking/tls-offload-reorder-good.svg b/Documentation/networking/tls-offload-reorder-good.svg index 10e17d91f70c14..7a231d0c1dec72 100644 --- a/Documentation/networking/tls-offload-reorder-good.svg +++ b/Documentation/networking/tls-offload-reorder-good.svg @@ -1 +1 @@ - + \ No newline at end of file