← Documents Documentation/arch/arm/ixp4xx.rst GitHub 원문 ↗

Linux 6.18.37 · Architecture

Linux on Intel IXP4xx

IXP4xx Linux 지원 범위, PCI 64/128MB window 제약, 지원 board와 역사적 TODO를 정리합니다.

Source pathDocumentation/arch/arm/ixp4xx.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약과 해설

ixp4xx.rst:1-173

IXP4xx는 network offload SoC이지만 당시 open Linux 지원은 기본 peripheral 중심이었습니다. PCI direct window는 빠르지만 64MB로 제한되고, indirect 방식은 128MB를 제공하는 대신 access 비용과 `mmap()` 불가 제약이 있습니다.

IXP4xx PCI window 선택
방식공간access cost`mmap()`
direct64MB표준 MMIO가능
indirect128MBregister 3회 + spinlock불가

성능과 address 공간 사이의 trade-off입니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 ===========================================================
2 Release Notes for Linux on Intel's IXP4xx Network Processor
3 ===========================================================
4
5 Maintained by Deepak Saxena <dsaxena@plexity.net>
6 -------------------------------------------------------------------------
7
8 1. Overview
9
10 Intel's IXP4xx network processor is a highly integrated SOC that
11 is targeted for network applications, though it has become popular
12 in industrial control and other areas due to low cost and power
13 consumption. The IXP4xx family currently consists of several processors
14 that support different network offload functions such as encryption,
15 routing, firewalling, etc. The IXP46x family is an updated version which
16 supports faster speeds, new memory and flash configurations, and more
17 integration such as an on-chip I2C controller.
18
19 For more information on the various versions of the CPU, see:
20
21 http://developer.intel.com/design/network/products/npfamily/ixp4xx.htm
22
23 Intel also made the IXCP1100 CPU for sometime which is an IXP4xx
24 stripped of much of the network intelligence.
25
26 2. Linux Support
27
28 Linux currently supports the following features on the IXP4xx chips:
29
30 - Dual serial ports
31 - PCI interface
32 - Flash access (MTD/JFFS)
33 - I2C through GPIO on IXP42x
34 - GPIO for input/output/interrupts
35 See arch/arm/mach-ixp4xx/include/mach/platform.h for access functions.
36 - Timers (watchdog, OS)
37
38 The following components of the chips are not supported by Linux and
39 require the use of Intel's proprietary CSR software:
40
41 - USB device interface
42 - Network interfaces (HSS, Utopia, NPEs, etc)
43 - Network offload functionality
44
45 If you need to use any of the above, you need to download Intel's
46 software from:
47
48 http://developer.intel.com/design/network/products/npfamily/ixp425.htm
49
50 DO NOT POST QUESTIONS TO THE LINUX MAILING LISTS REGARDING THE PROPRIETARY
51 SOFTWARE.
52
53 There are several websites that provide directions/pointers on using
54 Intel's software:
55
56 - http://sourceforge.net/projects/ixp4xx-osdg/
57 Open Source Developer's Guide for using uClinux and the Intel libraries
58
59 - http://gatewaymaker.sourceforge.net/
60 Simple one page summary of building a gateway using an IXP425 and Linux
61
62 - http://ixp425.sourceforge.net/
63 ATM device driver for IXP425 that relies on Intel's libraries
64
65 3. Known Issues/Limitations
66
67 3a. Limited inbound PCI window
68
69 The IXP4xx family allows for up to 256MB of memory but the PCI interface
70 can only expose 64MB of that memory to the PCI bus. This means that if
71 you are running with > 64MB, all PCI buffers outside of the accessible
72 range will be bounced using the routines in arch/arm/common/dmabounce.c.
73
74 3b. Limited outbound PCI window
75
76 IXP4xx provides two methods of accessing PCI memory space:
77
78 1) A direct mapped window from 0x48000000 to 0x4bffffff (64MB).
79 To access PCI via this space, we simply ioremap() the BAR
80 into the kernel and we can use the standard read[bwl]/write[bwl]
81 macros. This is the preferred method due to speed but it
82 limits the system to just 64MB of PCI memory. This can be
83 problematic if using video cards and other memory-heavy devices.
84
85 2) If > 64MB of memory space is required, the IXP4xx can be
86 configured to use indirect registers to access PCI This allows
87 for up to 128MB (0x48000000 to 0x4fffffff) of memory on the bus.
88 The disadvantage of this is that every PCI access requires
89 three local register accesses plus a spinlock, but in some
90 cases the performance hit is acceptable. In addition, you cannot
91 mmap() PCI devices in this case due to the indirect nature
92 of the PCI window.
93
94 By default, the direct method is used for performance reasons. If
95 you need more PCI memory, enable the IXP4XX_INDIRECT_PCI config option.
96
97 3c. GPIO as Interrupts
98
99 Currently the code only handles level-sensitive GPIO interrupts
100
101 4. Supported platforms
102
103 ADI Engineering Coyote Gateway Reference Platform
104 http://www.adiengineering.com/productsCoyote.html
105
106 The ADI Coyote platform is reference design for those building
107 small residential/office gateways. One NPE is connected to a 10/100
108 interface, one to 4-port 10/100 switch, and the third to and ADSL
109 interface. In addition, it also supports to POTs interfaces connected
110 via SLICs. Note that those are not supported by Linux ATM. Finally,
111 the platform has two mini-PCI slots used for 802.11[bga] cards.
112 Finally, there is an IDE port hanging off the expansion bus.
113
114 Gateworks Avila Network Platform
115 http://www.gateworks.com/support/overview.php
116
117 The Avila platform is basically and IXDP425 with the 4 PCI slots
118 replaced with mini-PCI slots and a CF IDE interface hanging off
119 the expansion bus.
120
121 Intel IXDP425 Development Platform
122 http://www.intel.com/design/network/products/npfamily/ixdpg425.htm
123
124 This is Intel's standard reference platform for the IXDP425 and is
125 also known as the Richfield board. It contains 4 PCI slots, 16MB
126 of flash, two 10/100 ports and one ADSL port.
127
128 Intel IXDP465 Development Platform
129 http://www.intel.com/design/network/products/npfamily/ixdp465.htm
130
131 This is basically an IXDP425 with an IXP465 and 32M of flash instead
132 of just 16.
133
134 Intel IXDPG425 Development Platform
135
136 This is basically and ADI Coyote board with a NEC EHCI controller
137 added. One issue with this board is that the mini-PCI slots only
138 have the 3.3v line connected, so you can't use a PCI to mini-PCI
139 adapter with an E100 card. So to NFS root you need to use either
140 the CSR or a WiFi card and a ramdisk that BOOTPs and then does
141 a pivot_root to NFS.
142
143 Motorola PrPMC1100 Processor Mezanine Card
144 http://www.fountainsys.com
145
146 The PrPMC1100 is based on the IXCP1100 and is meant to plug into
147 and IXP2400/2800 system to act as the system controller. It simply
148 contains a CPU and 16MB of flash on the board and needs to be
149 plugged into a carrier board to function. Currently Linux only
150 supports the Motorola PrPMC carrier board for this platform.
151
152 5. TODO LIST
153
154 - Add support for Coyote IDE
155 - Add support for edge-based GPIO interrupts
156 - Add support for CF IDE on expansion bus
157
158 6. Thanks
159
160 The IXP4xx work has been funded by Intel Corp. and MontaVista Software, Inc.
161
162 The following people have contributed patches/comments/etc:
163
164 - Lennerty Buytenhek
165 - Lutz Jaenicke
166 - Justin Mayfield
167 - Robert E. Ranslam
168
169 [I know I've forgotten others, please email me to be added]
170
171 -------------------------------------------------------------------------
172
173 Last Update: 01/04/2005
174

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

Release Notes for Linux on Intel's IXP4xx Network Processor

1-7

Intel IXP4xx network processor용 Linux release note이며 Deepak Saxena가 관리했습니다.

1. Overview

8-25

IXP4xx는 network application을 겨냥한 고집적 SoC이지만 저렴한 가격과 낮은 power consumption 덕분에 industrial control 등에도 널리 쓰였습니다. family별로 encryption, routing, firewall 같은 network offload 기능이 다릅니다.

IXP46x는 더 빠른 속도, 새 memory·flash 구성, on-chip I2C controller 같은 높은 integration을 제공합니다. Intel은 network intelligence를 많이 제거한 IXCP1100도 한동안 생산했습니다.

2. Linux Support

26-64
Linux 지원 기능비고
dual serial port지원
PCI interface지원
flash accessMTD/JFFS
I2CIXP42x에서 GPIO로 구현
GPIO input/output/interrupt`arch/arm/mach-ixp4xx/include/mach/platform.h`의 access function 사용
timerwatchdog와 OS timer

USB device interface, HSS·Utopia·NPE 같은 network interface, network offload 기능은 당시 Linux가 지원하지 않았고 Intel proprietary CSR software가 필요했습니다.

proprietary software에 관한 질문은 Linux mailing list에 올리지 말라는 문서의 명시적 경고가 있습니다.

3. Known Issues/Limitations

65-100

inbound PCI window의 제한 때문에 IXP4xx가 최대 256MB memory를 지원해도 PCI bus에 노출할 수 있는 영역은 64MB뿐입니다. 64MB보다 큰 RAM을 쓰면 접근 가능한 범위 밖의 PCI buffer는 `arch/arm/common/dmabounce.c` routine으로 bounce됩니다.

outbound 방식주소·용량장점제약
direct mapped`0x48000000`-`0x4bffffff`, 64MBBAR를 `ioremap()`하고 표준 `read[bwl]/write[bwl]` 사용, 빠름PCI memory 64MB 한계로 video card 등에서 문제 가능
indirect register`0x48000000`-`0x4fffffff`, 128MB더 큰 PCI memory 공간PCI access마다 local register access 3회와 spinlock 필요, `mmap()` 불가

기본값은 성능을 위해 direct 방식입니다. 더 큰 PCI memory가 필요하면 `IXP4XX_INDIRECT_PCI` config option을 켭니다.

GPIO interrupt code는 당시 level-sensitive interrupt만 처리했습니다.

4. Supported platforms

101-151
platform구성·주의점
ADI Engineering Coyote소형 gateway reference design. NPE가 10/100 interface, 4-port switch, ADSL에 연결되고 SLIC 기반 POTS 2개, 802.11[bga]용 mini-PCI 2개, expansion bus IDE port를 가짐. POTS는 Linux ATM 미지원
Gateworks AvilaIXDP425의 PCI 4개를 mini-PCI로 바꾸고 expansion bus에 CF IDE를 연결한 형태
Intel IXDP425 / RichfieldPCI 4개, flash 16MB, 10/100 port 2개, ADSL port 1개
Intel IXDP465IXP465와 flash 32MB를 사용한 IXDP425 계열
Intel IXDPG425ADI Coyote에 NEC EHCI controller 추가. mini-PCI에는 3.3V만 연결되어 E100 adapter 사용 불가. NFS root에는 CSR 또는 Wi-Fi와 BOOTP 후 `pivot_root`하는 ramdisk 필요
Motorola PrPMC1100IXCP1100 기반 mezzanine card로 IXP2400/2800 system controller 역할. CPU와 flash 16MB만 있어 carrier board가 필요하며 Linux는 Motorola PrPMC carrier만 지원

5. TODO LIST

152-157
  • Coyote IDE 지원 추가
  • edge-based GPIO interrupt 지원 추가
  • expansion bus의 CF IDE 지원 추가

6. Thanks

158-173

IXP4xx 작업은 Intel Corp.와 MontaVista Software, Inc.가 후원했습니다. patch와 comment를 기여한 사람은 Lennerty Buytenhek, Lutz Jaenicke, Justin Mayfield, Robert E. Ranslam이며 누락된 기여자는 추가 요청을 보내 달라고 적혀 있습니다.

마지막 갱신일은 2005년 1월 4일입니다.