Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'docs-4.11-fixes' of git://git.lwn.net/linux

Pull documentation fixes from Jonathan Corbet:
"A few fixes for the docs tree, including one for a 4.11 build
regression"

* tag 'docs-4.11-fixes' of git://git.lwn.net/linux:
Documentation/sphinx: fix primary_domain configuration
docs: Fix htmldocs build failure
doc/ko_KR/memory-barriers: Update control-dependencies section
pcieaer doc: update the link
Documentation: Update path to sysrq.txt

+47 -41
+2 -2
Documentation/DocBook/Makefile
··· 7 7 # list of DOCBOOKS. 8 8 9 9 DOCBOOKS := z8530book.xml \ 10 - kernel-hacking.xml kernel-locking.xml deviceiobook.xml \ 10 + kernel-hacking.xml kernel-locking.xml \ 11 11 writing_usb_driver.xml networking.xml \ 12 12 kernel-api.xml filesystems.xml lsm.xml kgdb.xml \ 13 13 gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \ 14 14 genericirq.xml s390-drivers.xml scsi.xml \ 15 - sh.xml regulator.xml w1.xml \ 15 + sh.xml w1.xml \ 16 16 writing_musb_glue_layer.xml 17 17 18 18 ifeq ($(DOCBOOKS),)
+1 -1
Documentation/PCI/pcieaer-howto.txt
··· 256 256 257 257 Then, you need a user space tool named aer-inject, which can be gotten 258 258 from: 259 - http://www.kernel.org/pub/linux/utils/pci/aer-inject/ 259 + https://git.kernel.org/cgit/linux/kernel/git/gong.chen/aer-inject.git/ 260 260 261 261 More information about aer-inject can be found in the document comes 262 262 with its source code.
+1 -1
Documentation/conf.py
··· 135 135 # If true, `todo` and `todoList` produce output, else they produce nothing. 136 136 todo_include_todos = False 137 137 138 - primary_domain = 'C' 138 + primary_domain = 'c' 139 139 highlight_language = 'none' 140 140 141 141 # -- Options for HTML output ----------------------------------------------
+1 -1
Documentation/media/v4l-drivers/bttv.rst
··· 312 312 protection faults (so-called "kernel oops"). 313 313 314 314 If you run into some kind of deadlock, you can try to dump a call trace 315 - for each process using sysrq-t (see Documentation/sysrq.txt). 315 + for each process using sysrq-t (see Documentation/admin-guide/sysrq.rst). 316 316 This way it is possible to figure where *exactly* some process in "D" 317 317 state is stuck. 318 318
+1 -1
Documentation/s390/Debugging390.txt
··· 2116 2116 This is particularly useful for syncing disks unmounting & rebooting 2117 2117 if the machine gets partially hung. 2118 2118 2119 - Read Documentation/sysrq.txt for more info 2119 + Read Documentation/admin-guide/sysrq.rst for more info 2120 2120 2121 2121 References: 2122 2122 ===========
+1 -1
Documentation/sysctl/kernel.txt
··· 85 85 - softlockup_all_cpu_backtrace 86 86 - soft_watchdog 87 87 - stop-a [ SPARC only ] 88 - - sysrq ==> Documentation/sysrq.txt 88 + - sysrq ==> Documentation/admin-guide/sysrq.rst 89 89 - sysctl_writes_strict 90 90 - tainted 91 91 - threads-max
+37 -31
Documentation/translations/ko_KR/memory-barriers.txt
··· 662 662 컨트둀 μ˜μ‘΄μ„± 663 663 ------------- 664 664 665 + ν˜„μž¬μ˜ μ»΄νŒŒμΌλŸ¬λ“€μ€ 컨트둀 μ˜μ‘΄μ„±μ„ μ΄ν•΄ν•˜κ³  μžˆμ§€ μ•ŠκΈ° λ•Œλ¬Έμ— 컨트둀 μ˜μ‘΄μ„±μ€ 666 + μ•½κ°„ 닀루기 μ–΄λ €μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€. 이 μ„Ήμ…˜μ˜ λͺ©μ μ€ μ—¬λŸ¬λΆ„μ΄ 컴파일러의 λ¬΄μ‹œλ‘œ 667 + 인해 μ—¬λŸ¬λΆ„μ˜ μ½”λ“œκ°€ λ§κ°€μ§€λŠ” κ±Έ 막을 수 μžˆλ„λ‘ λ•λŠ”κ²λ‹ˆλ‹€. 668 + 665 669 λ‘œλ“œ-λ‘œλ“œ 컨트둀 μ˜μ‘΄μ„±μ€ 데이터 μ˜μ‘΄μ„± λ°°λ¦¬μ–΄λ§ŒμœΌλ‘œλŠ” μ •ν™•νžˆ λ™μž‘ν•  μˆ˜κ°€ 666 670 μ—†μ–΄μ„œ 읽기 λ©”λͺ¨λ¦¬ 배리어λ₯Ό ν•„μš”λ‘œ ν•©λ‹ˆλ‹€. μ•„λž˜μ˜ μ½”λ“œλ₯Ό λ΄…μ‹œλ‹€: 667 671 ··· 693 689 694 690 q = READ_ONCE(a); 695 691 if (q) { 696 - WRITE_ONCE(b, p); 692 + WRITE_ONCE(b, 1); 697 693 } 698 694 699 695 컨트둀 μ˜μ‘΄μ„±μ€ 보톡 λ‹€λ₯Έ νƒ€μž…μ˜ 배리어듀과 짝을 맞좰 μ‚¬μš©λ©λ‹ˆλ‹€. κ·Έλ ‡λ‹€κ³€ 700 - ν•˜λ‚˜, READ_ONCE() λŠ” λ°˜λ“œμ‹œ μ‚¬μš©ν•΄μ•Ό 함을 λΆ€λ”” λͺ…μ‹¬ν•˜μ„Έμš”! READ_ONCE() κ°€ 701 - μ—†λ‹€λ©΄, μ»΄νŒŒμΌλŸ¬κ°€ 'a' λ‘œλΆ€ν„°μ˜ λ‘œλ“œλ₯Ό 'a' λ‘œλΆ€ν„°μ˜ λ˜λ‹€λ₯Έ λ‘œλ“œμ™€, 'b' 둜의 702 - μŠ€ν† μ–΄λ₯Ό 'b' 둜의 λ˜λ‹€λ₯Έ μŠ€ν† μ–΄μ™€ μ‘°ν•©ν•΄ 버렀 맀우 비직관적인 κ²°κ³Όλ₯Ό μ΄ˆλž˜ν•  수 703 - μžˆμŠ΅λ‹ˆλ‹€. 696 + ν•˜λ‚˜, READ_ONCE() 도 WRITE_ONCE() 도 선택사항이 μ•„λ‹ˆλΌ ν•„μˆ˜μ‚¬ν•­μž„μ„ λΆ€λ”” 697 + λͺ…μ‹¬ν•˜μ„Έμš”! READ_ONCE() κ°€ μ—†λ‹€λ©΄, μ»΄νŒŒμΌλŸ¬λŠ” 'a' λ‘œλΆ€ν„°μ˜ λ‘œλ“œλ₯Ό 'a' λ‘œλΆ€ν„°μ˜ 698 + λ˜λ‹€λ₯Έ λ‘œλ“œμ™€ μ‘°ν•©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. WRITE_ONCE() κ°€ μ—†λ‹€λ©΄, μ»΄νŒŒμΌλŸ¬λŠ” 'b' 둜의 699 + μŠ€ν† μ–΄λ₯Ό 'b' 둜의 또라느 μŠ€ν† μ–΄λ“€κ³Ό μ‘°ν•©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 두 경우 λͺ¨λ‘ μˆœμ„œμ— 700 + μžˆμ–΄ μƒλ‹Ήνžˆ 비직관적인 κ²°κ³Όλ₯Ό μ΄ˆλž˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 704 701 705 702 이걸둜 끝이 μ•„λ‹Œκ²Œ, μ»΄νŒŒμΌλŸ¬κ°€ λ³€μˆ˜ 'a' 의 값이 항상 0이 μ•„λ‹ˆλΌκ³  증λͺ…ν•  수 706 703 μžˆλ‹€λ©΄, μ•žμ˜ μ˜ˆμ—μ„œ "if" 문을 μ—†μ• μ„œ λ‹€μŒκ³Ό 같이 μ΅œμ ν™” ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€: 707 704 708 705 q = a; 709 - b = p; /* BUG: Compiler and CPU can both reorder!!! */ 706 + b = 1; /* BUG: Compiler and CPU can both reorder!!! */ 710 707 711 708 κ·ΈλŸ¬λ‹ˆ READ_ONCE() λ₯Ό λ°˜λ“œμ‹œ μ‚¬μš©ν•˜μ„Έμš”. 712 709 ··· 717 712 q = READ_ONCE(a); 718 713 if (q) { 719 714 barrier(); 720 - WRITE_ONCE(b, p); 715 + WRITE_ONCE(b, 1); 721 716 do_something(); 722 717 } else { 723 718 barrier(); 724 - WRITE_ONCE(b, p); 719 + WRITE_ONCE(b, 1); 725 720 do_something_else(); 726 721 } 727 722 ··· 730 725 731 726 q = READ_ONCE(a); 732 727 barrier(); 733 - WRITE_ONCE(b, p); /* BUG: No ordering vs. load from a!!! */ 728 + WRITE_ONCE(b, 1); /* BUG: No ordering vs. load from a!!! */ 734 729 if (q) { 735 - /* WRITE_ONCE(b, p); -- moved up, BUG!!! */ 730 + /* WRITE_ONCE(b, 1); -- moved up, BUG!!! */ 736 731 do_something(); 737 732 } else { 738 - /* WRITE_ONCE(b, p); -- moved up, BUG!!! */ 733 + /* WRITE_ONCE(b, 1); -- moved up, BUG!!! */ 739 734 do_something_else(); 740 735 } 741 736 ··· 747 742 748 743 q = READ_ONCE(a); 749 744 if (q) { 750 - smp_store_release(&b, p); 745 + smp_store_release(&b, 1); 751 746 do_something(); 752 747 } else { 753 - smp_store_release(&b, p); 748 + smp_store_release(&b, 1); 754 749 do_something_else(); 755 750 } 756 751 ··· 759 754 760 755 q = READ_ONCE(a); 761 756 if (q) { 762 - WRITE_ONCE(b, p); 757 + WRITE_ONCE(b, 1); 763 758 do_something(); 764 759 } else { 765 - WRITE_ONCE(b, r); 760 + WRITE_ONCE(b, 2); 766 761 do_something_else(); 767 762 } 768 763 ··· 775 770 776 771 q = READ_ONCE(a); 777 772 if (q % MAX) { 778 - WRITE_ONCE(b, p); 773 + WRITE_ONCE(b, 1); 779 774 do_something(); 780 775 } else { 781 - WRITE_ONCE(b, r); 776 + WRITE_ONCE(b, 2); 782 777 do_something_else(); 783 778 } 784 779 ··· 786 781 μœ„μ˜ μ½”λ“œλ₯Ό μ•„λž˜μ™€ 같이 바꿔버릴 수 μžˆμŠ΅λ‹ˆλ‹€: 787 782 788 783 q = READ_ONCE(a); 789 - WRITE_ONCE(b, p); 784 + WRITE_ONCE(b, 1); 790 785 do_something_else(); 791 786 792 787 μ΄λ ‡κ²Œ 되면, CPU λŠ” λ³€μˆ˜ 'a' λ‘œλΆ€ν„°μ˜ λ‘œλ“œμ™€ λ³€μˆ˜ 'b' 둜의 μŠ€ν† μ–΄ μ‚¬μ΄μ˜ μˆœμ„œλ₯Ό ··· 798 793 q = READ_ONCE(a); 799 794 BUILD_BUG_ON(MAX <= 1); /* Order load from a with store to b. */ 800 795 if (q % MAX) { 801 - WRITE_ONCE(b, p); 796 + WRITE_ONCE(b, 1); 802 797 do_something(); 803 798 } else { 804 - WRITE_ONCE(b, r); 799 + WRITE_ONCE(b, 2); 805 800 do_something_else(); 806 801 } 807 802 ··· 833 828 834 829 q = READ_ONCE(a); 835 830 if (q) { 836 - WRITE_ONCE(b, p); 831 + WRITE_ONCE(b, 1); 837 832 } else { 838 - WRITE_ONCE(b, r); 833 + WRITE_ONCE(b, 2); 839 834 } 840 - WRITE_ONCE(c, 1); /* BUG: No ordering against the read from "a". */ 835 + WRITE_ONCE(c, 1); /* BUG: No ordering against the read from 'a'. */ 841 836 842 - μ»΄νŒŒμΌλŸ¬λŠ” volatile νƒ€μž…μ— λŒ€ν•œ μ•‘μ„ΈμŠ€λ₯Ό 재배치 ν•  수 μ—†κ³  이 쑰건 ν•˜μ˜ "b" 837 + μ»΄νŒŒμΌλŸ¬λŠ” volatile νƒ€μž…μ— λŒ€ν•œ μ•‘μ„ΈμŠ€λ₯Ό 재배치 ν•  수 μ—†κ³  이 쑰건 ν•˜μ˜ 'b' 843 838 둜의 μ“°κΈ°λ₯Ό 재배치 ν•  수 μ—†κΈ° λ•Œλ¬Έμ— 여기에 μˆœμ„œ κ·œμΉ™μ΄ μ‘΄μž¬ν•œλ‹€κ³  μ£Όμž₯ν•˜κ³  844 839 싢을 κ²λ‹ˆλ‹€. λΆˆν–‰νžˆλ„ 이 κ²½μš°μ—, μ»΄νŒŒμΌλŸ¬λŠ” λ‹€μŒμ˜ κ°€μƒμ˜ pseudo-assembly μ–Έμ–΄ 845 - μ½”λ“œμ²˜λŸΌ "b" 둜의 λ‘κ°œμ˜ μ“°κΈ° μ˜€νΌλ ˆμ΄μ…˜μ„ conditional-move μΈμŠ€νŠΈλŸ­μ…˜μœΌλ‘œ 840 + μ½”λ“œμ²˜λŸΌ 'b' 둜의 λ‘κ°œμ˜ μ“°κΈ° μ˜€νΌλ ˆμ΄μ…˜μ„ conditional-move μΈμŠ€νŠΈλŸ­μ…˜μœΌλ‘œ 846 841 λ²ˆμ—­ν•  수 μžˆμŠ΅λ‹ˆλ‹€: 847 842 848 843 ld r1,a 849 - ld r2,p 850 - ld r3,r 851 844 cmp r1,$0 852 - cmov,ne r4,r2 853 - cmov,eq r4,r3 845 + cmov,ne r4,$1 846 + cmov,eq r4,$2 854 847 st r4,b 855 848 st $1,c 856 849 857 - μ™„ν™”λœ μˆœμ„œ κ·œμΉ™μ˜ CPU λŠ” "a" λ‘œλΆ€ν„°μ˜ λ‘œλ“œμ™€ "c" 둜의 μŠ€ν† μ–΄ 사이에 μ–΄λ–€ 850 + μ™„ν™”λœ μˆœμ„œ κ·œμΉ™μ˜ CPU λŠ” 'a' λ‘œλΆ€ν„°μ˜ λ‘œλ“œμ™€ 'c' 둜의 μŠ€ν† μ–΄ 사이에 μ–΄λ–€ 858 851 μ’…λ₯˜μ˜ μ˜μ‘΄μ„±λ„ κ°–μ§€ μ•Šμ„ κ²λ‹ˆλ‹€. 이 컨트둀 μ˜μ‘΄μ„±μ€ λ‘κ°œμ˜ cmov μΈμŠ€νŠΈλŸ­μ…˜κ³Ό 859 852 거기에 μ˜μ‘΄ν•˜λŠ” μŠ€ν† μ–΄ μ—κ²Œλ§Œ 적용될 κ²λ‹ˆλ‹€. 짧게 λ§ν•˜μžλ©΄, 컨트둀 μ˜μ‘΄μ„±μ€ 860 853 μ£Όμ–΄μ§„ if 문의 then 절과 else μ ˆμ—κ²Œλ§Œ (그리고 이 두 절 λ‚΄μ—μ„œ ν˜ΈμΆœλ˜λŠ” 861 854 ν•¨μˆ˜λ“€μ—κ²ŒκΉŒμ§€) μ μš©λ˜μ§€, 이 if 문을 λ’€λ”°λ₯΄λŠ” μ½”λ“œμ—λŠ” μ μš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 862 855 863 856 λ§ˆμ§€λ§‰μœΌλ‘œ, 컨트둀 μ˜μ‘΄μ„±μ€ 이행성 (transitivity) 을 μ œκ³΅ν•˜μ§€ -μ•ŠμŠ΅λ‹ˆλ‹€-. 이건 864 - x 와 y κ°€ λ‘˜ λ‹€ 0 μ΄λΌλŠ” μ΄ˆκΈ°κ°’μ„ κ°€μ‘Œλ‹€λŠ” κ°€μ • ν•˜μ˜ λ‘κ°œμ˜ 예제둜 857 + 'x' 와 'y' κ°€ λ‘˜ λ‹€ 0 μ΄λΌλŠ” μ΄ˆκΈ°κ°’μ„ κ°€μ‘Œλ‹€λŠ” κ°€μ • ν•˜μ˜ λ‘κ°œμ˜ 예제둜 865 858 λ³΄μ΄κ² μŠ΅λ‹ˆλ‹€: 866 859 867 860 CPU 0 CPU 1 ··· 926 923 927 924 (*) 컨트둀 μ˜μ‘΄μ„±μ€ 이행성을 μ œκ³΅ν•˜μ§€ -μ•ŠμŠ΅λ‹ˆλ‹€-. 이행성이 ν•„μš”ν•˜λ‹€λ©΄, 928 925 smp_mb() λ₯Ό μ‚¬μš©ν•˜μ„Έμš”. 926 + 927 + (*) μ»΄νŒŒμΌλŸ¬λŠ” 컨트둀 μ˜μ‘΄μ„±μ„ μ΄ν•΄ν•˜κ³  μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ μ»΄νŒŒμΌλŸ¬κ°€ 928 + μ—¬λŸ¬λΆ„μ˜ μ½”λ“œλ₯Ό λ§κ°€λœ¨λ¦¬μ§€ μ•Šλ„λ‘ ν•˜λŠ”κ±΄ μ—¬λŸ¬λΆ„μ΄ ν•΄μ•Ό ν•˜λŠ” μΌμž…λ‹ˆλ‹€. 929 929 930 930 931 931 SMP 배리어 μ§λ§žμΆ”κΈ°
+3 -3
Documentation/virtual/uml/UserModeLinux-HOWTO.txt
··· 2401 2401 2402 2402 This takes one argument, which is a single letter. It calls the 2403 2403 generic kernel's SysRq driver, which does whatever is called for by 2404 - that argument. See the SysRq documentation in Documentation/sysrq.txt 2405 - in your favorite kernel tree to see what letters are valid and what 2406 - they do. 2404 + that argument. See the SysRq documentation in 2405 + Documentation/admin-guide/sysrq.rst in your favorite kernel tree to 2406 + see what letters are valid and what they do. 2407 2407 2408 2408 2409 2409