* Re: [PATCH] IPv6: Fix kernel panic while send SCTP data with IP fragments
From: David Miller @ 2007-08-21 7:09 UTC (permalink / raw)
To: yjwei; +Cc: acme, netdev
In-Reply-To: <46C8FC18.6030006@cn.fujitsu.com>
From: Wei Yongjun <yjwei@cn.fujitsu.com>
Date: Mon, 20 Aug 2007 10:27:36 +0800
> Hi Arnaldo Carvalho de Melo:
> > Em Mon, Aug 20, 2007 at 09:28:27AM +0800, Wei Yongjun escreveu:
> >
> >> If ICMP6 message with "Packet Too Big" is received after send SCTP DATA,
> >> kernel panic will occur when SCTP DATA is send again.
> >>
> >> This is because of a bad dest address when call to skb_copy_bits().
> >>
> >> The messages sequence is like this:
> >>
> >> Endpoint A Endpoint B
> >> <------- SCTP DATA (size=1432)
> >> ICMP6 message ------->
> >> (Packet Too Big pmtu=1280)
> >> <------- Resend SCTP DATA (size=1432)
> >> ------------kernel panic---------------
> >>
> >
> > Thanks! I'm to blame for this one, problem was introduced in:
> >
> > b0e380b1d8a8e0aca215df97702f99815f05c094
> >
> > @@ -761,7 +762,7 @@ slow_path:
> > /*
> > * Copy a block of the IP datagram.
> > */
> > - if (skb_copy_bits(skb, ptr, frag->h.raw, len))
> > + if (skb_copy_bits(skb, ptr, skb_transport_header(skb),
> > len))
> > BUG();
> > left -= len;
> >
> > So please add:
> >
> > Signed-off-by: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
> >
> > To this patch.
> >
> > - Arnaldo
> >
> >
> >
> >> printing eip:
> >> c05be62a
> >> *pde = 00000000
> >> Oops: 0002 [#1]
> >> SMP
> >> Modules linked in: scomm l2cap bluetooth ipv6 dm_mirror dm_mod video output sbs battery lp floppy sg i2c_piix4 i2c_core pcnet32 mii button ac parport_pc parport ide_cd cdrom serio_raw mptspi mptscsih mptbase scsi_transport_spi sd_mod scsi_mod ext3 jbd ehci_hcd ohci_hcd uhci_hcd
> >> CPU: 0
> >> EIP: 0060:[<c05be62a>] Not tainted VLI
> >> EFLAGS: 00010282 (2.6.23-rc2 #1)
> >> EIP is at skb_copy_bits+0x4f/0x1ef
> >> eax: 000004d0 ebx: ce12a980 ecx: 00000134 edx: cfd5a880
> >> esi: c8246858 edi: 00000000 ebp: c0759b14 esp: c0759adc
> >> ds: 007b es: 007b fs: 00d8 gs: 0000 ss: 0068
> >> Process swapper (pid: 0, ti=c0759000 task=c06d0340 task.ti=c0713000)
> >> Stack: c0759b88 c0405867 ce12a980 c8bff838 c789c084 00000000 00000028 cfd5a880
> >> d09f1890 000005dc 0000007b ce12a980 cfd5a880 c8bff838 c0759b88 d09bc521
> >> 000004d0 fffff96c 00000200 00000100 c0759b50 cfd5a880 00000246 c0759bd4
> >> Call Trace:
> >> [<c0405e1d>] show_trace_log_lvl+0x1a/0x2f
> >> [<c0405ecd>] show_stack_log_lvl+0x9b/0xa3
> >> [<c040608d>] show_registers+0x1b8/0x289
> >> [<c0406271>] die+0x113/0x246
> >> [<c0625dbc>] do_page_fault+0x4ad/0x57e
> >> [<c0624642>] error_code+0x72/0x78
> >> [<d09bc521>] ip6_output+0x8e5/0xab2 [ipv6]
> >> [<d09bcec1>] ip6_xmit+0x2ea/0x3a3 [ipv6]
> >> [<d0a3f2ca>] sctp_v6_xmit+0x248/0x253 [sctp]
> >> [<d0a3c934>] sctp_packet_transmit+0x53f/0x5ae [sctp]
> >> [<d0a34bf8>] sctp_outq_flush+0x555/0x587 [sctp]
> >> [<d0a34d3c>] sctp_retransmit+0xf8/0x10f [sctp]
> >> [<d0a3d183>] sctp_icmp_frag_needed+0x57/0x5b [sctp]
> >> [<d0a3ece2>] sctp_v6_err+0xcd/0x148 [sctp]
> >> [<d09cf1ce>] icmpv6_notify+0xe6/0x167 [ipv6]
> >> [<d09d009a>] icmpv6_rcv+0x7d7/0x849 [ipv6]
> >> [<d09be240>] ip6_input+0x1dc/0x310 [ipv6]
> >> [<d09be965>] ipv6_rcv+0x294/0x2df [ipv6]
> >> [<c05c3789>] netif_receive_skb+0x2d2/0x335
> >> [<c05c5733>] process_backlog+0x7f/0xd0
> >> [<c05c58f6>] net_rx_action+0x96/0x17e
> >> [<c042e722>] __do_softirq+0x64/0xcd
> >> [<c0406f37>] do_softirq+0x5c/0xac
> >> =======================
> >> Code: 00 00 29 ca 89 d0 2b 45 e0 89 55 ec 85 c0 7e 35 39 45 08 8b 55 e4 0f 4e 45 08 8b 75 e0 8b 7d dc 89 c1 c1 e9 02 03 b2 a0 00 00 00 <f3> a5 89 c1 83 e1 03 74 02 f3 a4 29 45 08 0f 84 7b 01 00 00 01
> >> EIP: [<c05be62a>] skb_copy_bits+0x4f/0x1ef SS:ESP 0068:c0759adc
> >> Kernel panic - not syncing: Fatal exception in interrupt
> >>
> >> Following is the patch.
> >>
> Have changed. Thanks
>
> Regards
>
>
> Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Applied, thanks everyone.
^ permalink raw reply
* Re: [PATCH 2.6.22.3] ppp: fix output buffer size in ppp_decompress_frame
From: David Miller @ 2007-08-21 7:13 UTC (permalink / raw)
To: konstantin.sharlaimov; +Cc: msuresh_2001, paulus, netdev, linux-kernel
In-Reply-To: <1187343951.10629.9.camel@traveler>
From: Konstantin Sharlaimov <konstantin.sharlaimov@gmail.com>
Date: Fri, 17 Aug 2007 20:45:51 +1100
> This patch addresses the issue with "osize too small" errors in mppe encryption.
> The patch fixes the issue with wrong output buffer size being passed to ppp
> decompression routine.
>
> Signed-off-by: Konstantin Sharlaimov <konstantin.sharlaimov@gmail.com>
> ---
> As pointed out by Suresh Mahalingam, the issue addressed by
> ppp-fix-osize-too-small-errors-when-decoding patch is not fully resolved yet.
> The size of allocated output buffer is correct, however it size passed to
> ppp->rcomp->decompress in ppp_generic.c if wrong. The patch fixes that.
Patch applied, thanks.
^ permalink raw reply
* Re: [PATCH 0/9 Rev3] Implement batching skb API and support in IPoIB
From: David Miller @ 2007-08-21 7:18 UTC (permalink / raw)
To: krkumar2
Cc: gaagaan, general, hadi, herbert, jagana, jeff, johnpol, kaber,
kumarkr, mcarlson, mchan, netdev, peter.p.waskiewicz.jr, rdreier,
rick.jones2, Robert.Olsson, shemminger, sri, tgraf, xma
In-Reply-To: <OFFFECFAD7.CF3FF115-ON6525733A.0020AE37-6525733A.00218365@in.ibm.com>
From: Krishna Kumar2 <krkumar2@in.ibm.com>
Date: Fri, 17 Aug 2007 11:36:03 +0530
> > I ran 3 iterations of 45 sec tests (total 1 hour 16 min, but I will
> > run a longer one tonight). The results are (results in KB/s, and %):
>
> I ran a 8.5 hours run with no batching + another 8.5 hours run with
> batching (Buffer sizes: "32 128 512 4096 16384", Threads: "1 8 32",
> Each test run time: 3 minutes, Iterations to average: 5). TCP seems
> to get a small improvement.
Using 16K buffer size really isn't going to keep the pipe full enough
for TSO. And realistically applications queue much more data at a
time. Also, with smaller buffer sizes can have negative effects for
the dynamic receive and send buffer growth algorithm the kernel uses,
it might consider the connection application limited for too long.
I would really prefer to see numbers that use buffer sizes more in
line with the amount of data that is typically inflight on a 1G
connection on a local network.
Do a tcpdump during the height of the transfer to see about what this
value is. When an ACK comes in, compare the sequence number it's
ACK'ing with the sequence number of the most recently sent frame.
The difference is approximately the pipe size at maximum congestion
window assuming a loss free local network.
^ permalink raw reply
* Re: [PATCH 1/1] ipv6: corrects sended rtnetlink message
From: David Miller @ 2007-08-21 7:20 UTC (permalink / raw)
To: milon; +Cc: netdev
In-Reply-To: <20070815143322.GA25640@wq.cz>
From: Milan Kocian <milon@wq.cz>
Date: Wed, 15 Aug 2007 16:33:22 +0200
> ipv6 sends a RTM_DELLINK netlink message on both events: NETDEV_DOWN,
> NETDEV_UNREGISTER. Corrected by sending RTM_NEWLINK on NETDEV_DOWN event
> and RTM_DELLINK on NETDEV_UNREGISTER event.
Why would we indicate that a new device has appeared on NETDEV_DOWN?
I don't see any sense in saying "RTM_NEWLINK" for a removal, it's
for additions.
^ permalink raw reply
* Re: [PATCH] improved xfrm_audit_log() patch
From: David Miller @ 2007-08-21 7:24 UTC (permalink / raw)
To: latten; +Cc: netdev, linux-audit, sgrubb
In-Reply-To: <200708151616.l7FGGTk9001632@faith.austin.ibm.com>
From: Joy Latten <latten@austin.ibm.com>
Date: Wed, 15 Aug 2007 11:16:29 -0500
> On Tue, 2007-08-07 at 18:32 -0700, David Miller wrote:
> >From: Joy Latten <latten@austin.ibm.com>
> >Date: Thu, 2 Aug 2007 15:56:47 -0500
> >
> >> @@ -426,10 +426,15 @@ struct xfrm_audit
> >> };
> >>
> >> #ifdef CONFIG_AUDITSYSCALL
> >> -extern void xfrm_audit_log(uid_t auid, u32 secid, int type, int result,
> >> - struct xfrm_policy *xp, struct xfrm_state *x);
> >> +extern void xfrm_audit_log(struct xfrm_audit audit_info, int result,
> >> + __be32 flowid, struct xfrm_policy *xp,
> >> + struct xfrm_state *x, char *buf);
> >
> >Passing audit_info as an aggregate argument puts them into
> >previous argument registers, or if they are not enough it
> >goes either partially of wholly onto the stack, depending
> >upon architecture.
> >
> >In fact you've made the argument register usage worse than
> >in your previous revision. :-/
> >
> >Perhaps you meant to pass "struct xfrm_audit *" instead?
>
> Revised patch to pass pointer to struct xfrm_audit.
> Sorry, I missed that.
>
> Signed-off-by: Joy Latten <latten@austin.ibm.com>
Looks good, applied to net-2.6.24, thanks Joy.
^ permalink raw reply
* ppp dependency on slhc
From: Andrew Morton @ 2007-08-21 8:30 UTC (permalink / raw)
To: Paul Mackerras; +Cc: netdev
ERROR: "slhc_init" [drivers/net/ppp_generic.ko] undefined!
ERROR: "slhc_free" [drivers/net/ppp_generic.ko] undefined!
ERROR: "slhc_uncompress" [drivers/net/ppp_generic.ko] undefined!
ERROR: "slhc_compress" [drivers/net/ppp_generic.ko] undefined!
ERROR: "slhc_toss" [drivers/net/ppp_generic.ko] undefined!
ERROR: "slhc_remember" [drivers/net/ppp_generic.ko] undefined!
yet another reminder that select doesn't work ;)
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.23-rc3-mm1
# Tue Aug 21 01:13:04 2007
#
CONFIG_X86_64=y
CONFIG_64BIT=y
CONFIG_X86=y
CONFIG_GENERIC_TIME=y
CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_GENERIC_CMOS_UPDATE=y
CONFIG_ZONE_DMA32=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_SEMAPHORE_SLEEPERS=y
CONFIG_MMU=y
CONFIG_ZONE_DMA=y
CONFIG_QUICKLIST=y
CONFIG_NR_QUICK=2
CONFIG_RWSEM_GENERIC_SPINLOCK=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_X86_CMPXCHG=y
CONFIG_EARLY_PRINTK=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_ARCH_POPULATES_NODE_MAP=y
CONFIG_DMI=y
CONFIG_AUDIT_ARCH=y
CONFIG_GENERIC_BUG=y
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
#
# General setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
CONFIG_SWAP=y
CONFIG_SWAP_PREFETCH=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
CONFIG_TASKSTATS=y
CONFIG_TASK_DELAY_ACCT=y
CONFIG_TASK_XACCT=y
CONFIG_TASK_IO_ACCOUNTING=y
CONFIG_USER_NS=y
CONFIG_AUDIT=y
CONFIG_AUDITSYSCALL=y
CONFIG_IKCONFIG=y
CONFIG_LOG_BUF_SHIFT=14
CONFIG_CONTAINERS=y
CONFIG_CONTAINER_DEBUG=y
CONFIG_CONTAINER_NS=y
CONFIG_CONTAINER_CPUACCT=y
CONFIG_CPUSETS=y
CONFIG_SYSFS_DEPRECATED=y
CONFIG_PROC_PID_CPUSET=y
CONFIG_RELAY=y
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
CONFIG_UID16=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
CONFIG_KALLSYMS_EXTRA_PASS=y
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_ANON_INODES=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLUB_DEBUG=y
# CONFIG_SLAB is not set
CONFIG_SLUB=y
# CONFIG_SLOB is not set
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_PROC_KPAGEMAP=y
CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
CONFIG_MODVERSIONS=y
CONFIG_MODULE_SRCVERSION_ALL=y
CONFIG_KMOD=y
CONFIG_STOP_MACHINE=y
CONFIG_BLOCK=y
CONFIG_BLK_DEV_BSG=y
#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=m
CONFIG_IOSCHED_DEADLINE=m
CONFIG_IOSCHED_CFQ=m
# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
CONFIG_DEFAULT_NOOP=y
CONFIG_DEFAULT_IOSCHED="noop"
#
# Processor type and features
#
# CONFIG_TICK_ONESHOT is not set
CONFIG_X86_PC=y
# CONFIG_X86_VSMP is not set
# CONFIG_MK8 is not set
# CONFIG_MPSC is not set
# CONFIG_MCORE2 is not set
CONFIG_GENERIC_CPU=y
CONFIG_X86_L1_CACHE_BYTES=128
CONFIG_X86_L1_CACHE_SHIFT=7
CONFIG_X86_INTERNODE_CACHE_BYTES=128
CONFIG_X86_TSC=y
CONFIG_X86_GOOD_APIC=y
CONFIG_MICROCODE=m
CONFIG_MICROCODE_OLD_INTERFACE=y
CONFIG_X86_MSR=m
CONFIG_X86_CPUID=m
CONFIG_X86_HT=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_MTRR=y
CONFIG_SMP=y
CONFIG_SCHED_SMT=y
CONFIG_SCHED_MC=y
CONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not set
CONFIG_PREEMPT_BKL=y
CONFIG_NUMA=y
CONFIG_K8_NUMA=y
CONFIG_NODES_SHIFT=6
CONFIG_X86_64_ACPI_NUMA=y
CONFIG_NUMA_EMU=y
CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_SELECT_MEMORY_MODEL=y
# CONFIG_FLATMEM_MANUAL is not set
CONFIG_DISCONTIGMEM_MANUAL=y
# CONFIG_SPARSEMEM_MANUAL is not set
CONFIG_DISCONTIGMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
CONFIG_NEED_MULTIPLE_NODES=y
# CONFIG_SPARSEMEM_STATIC is not set
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_MIGRATION=y
CONFIG_RESOURCES_64BIT=y
CONFIG_ZONE_DMA_FLAG=1
CONFIG_BOUNCE=y
CONFIG_VIRT_TO_BUS=y
CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y
CONFIG_OUT_OF_LINE_PFN_TO_PAGE=y
CONFIG_NR_CPUS=8
CONFIG_PHYSICAL_ALIGN=0x200000
CONFIG_HOTPLUG_CPU=y
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
CONFIG_HPET_TIMER=y
CONFIG_IOMMU=y
CONFIG_CALGARY_IOMMU=y
CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y
CONFIG_SWIOTLB=y
CONFIG_X86_MCE=y
CONFIG_X86_MCE_INTEL=y
CONFIG_X86_MCE_AMD=y
CONFIG_KEXEC=y
CONFIG_CRASH_DUMP=y
CONFIG_RELOCATABLE=y
CONFIG_PHYSICAL_START=0x200000
CONFIG_CC_STACKPROTECTOR=y
CONFIG_CC_STACKPROTECTOR_ALL=y
# CONFIG_HZ_100 is not set
CONFIG_HZ_250=y
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=250
CONFIG_K8_NB=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_ISA_DMA_API=y
CONFIG_GENERIC_PENDING_IRQ=y
#
# Power management options
#
CONFIG_PM=y
CONFIG_PM_LEGACY=y
CONFIG_PM_DEBUG=y
CONFIG_PM_VERBOSE=y
CONFIG_PM_TRACE=y
CONFIG_PM_SLEEP_SMP=y
CONFIG_PM_SLEEP=y
CONFIG_SUSPEND_SMP_POSSIBLE=y
CONFIG_SUSPEND=y
CONFIG_HIBERNATION_SMP_POSSIBLE=y
CONFIG_HIBERNATION=y
CONFIG_PM_STD_PARTITION=""
CONFIG_ACPI=y
CONFIG_ACPI_SLEEP=y
CONFIG_ACPI_AC=m
CONFIG_ACPI_BATTERY=m
CONFIG_ACPI_BUTTON=m
CONFIG_ACPI_VIDEO=m
CONFIG_ACPI_FAN=m
CONFIG_ACPI_DOCK=m
CONFIG_ACPI_BAY=m
CONFIG_ACPI_PROCESSOR=m
CONFIG_ACPI_HOTPLUG_CPU=y
CONFIG_ACPI_THERMAL=m
CONFIG_ACPI_NUMA=y
CONFIG_ACPI_ASUS=m
CONFIG_ACPI_TOSHIBA=m
CONFIG_ACPI_BLACKLIST_YEAR=0
CONFIG_ACPI_DEBUG=y
CONFIG_ACPI_DEBUG_FUNC_TRACE=y
CONFIG_ACPI_EC=y
CONFIG_ACPI_POWER=y
CONFIG_ACPI_SYSTEM=y
CONFIG_X86_PM_TIMER=y
CONFIG_ACPI_CONTAINER=m
CONFIG_ACPI_SBS=m
#
# CPU Frequency scaling
#
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=m
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=m
CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
#
# CPUFreq processor drivers
#
CONFIG_X86_POWERNOW_K8=m
CONFIG_X86_POWERNOW_K8_ACPI=y
CONFIG_X86_SPEEDSTEP_CENTRINO=m
CONFIG_X86_ACPI_CPUFREQ=m
#
# shared options
#
CONFIG_X86_P4_CLOCKMOD=m
CONFIG_X86_SPEEDSTEP_LIB=m
#
# CPU idle PM support
#
CONFIG_CPU_IDLE=y
#
# Governors
#
CONFIG_CPU_IDLE_GOV_LADDER=m
#
# Bus options (PCI etc.)
#
CONFIG_PCI=y
CONFIG_PCI_DIRECT=y
CONFIG_PCI_MMCONFIG=y
CONFIG_DMAR=y
CONFIG_DMAR_GFX_WA=y
CONFIG_DMAR_FLOPPY_WA=y
CONFIG_PCIEPORTBUS=y
CONFIG_HOTPLUG_PCI_PCIE=m
CONFIG_PCIEAER=y
CONFIG_ARCH_SUPPORTS_MSI=y
CONFIG_PCI_MSI=y
CONFIG_PCI_DEBUG=y
CONFIG_HT_IRQ=y
CONFIG_PCCARD=m
CONFIG_PCMCIA_DEBUG=y
CONFIG_PCMCIA=m
CONFIG_PCMCIA_LOAD_CIS=y
CONFIG_CARDBUS=y
#
# PC-card bridges
#
CONFIG_YENTA=m
CONFIG_YENTA_O2=y
CONFIG_YENTA_RICOH=y
CONFIG_YENTA_TI=y
CONFIG_YENTA_ENE_TUNE=y
CONFIG_YENTA_TOSHIBA=y
CONFIG_PD6729=m
CONFIG_I82092=m
CONFIG_PCCARD_NONSTATIC=m
CONFIG_HOTPLUG_PCI=m
CONFIG_HOTPLUG_PCI_FAKE=m
CONFIG_HOTPLUG_PCI_ACPI=m
CONFIG_HOTPLUG_PCI_ACPI_IBM=m
CONFIG_HOTPLUG_PCI_CPCI=y
CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m
CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m
CONFIG_HOTPLUG_PCI_SHPC=m
#
# Executable file formats / Emulations
#
CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_MISC=m
CONFIG_IA32_EMULATION=y
CONFIG_IA32_AOUT=m
CONFIG_COMPAT=y
CONFIG_COMPAT_FOR_U64_ALIGNMENT=y
CONFIG_SYSVIPC_COMPAT=y
#
# Networking
#
CONFIG_NET=y
#
# Networking options
#
# CONFIG_PACKET is not set
# CONFIG_UNIX is not set
# CONFIG_NET_KEY is not set
# CONFIG_INET is not set
# CONFIG_NETWORK_SECMARK is not set
# CONFIG_NETFILTER is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_WAN_ROUTER is not set
#
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set
CONFIG_NET_SCH_FIFO=y
#
# Network testing
#
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
#
# Wireless
#
CONFIG_CFG80211=m
CONFIG_NL80211=y
CONFIG_WIRELESS_EXT=y
CONFIG_MAC80211=m
CONFIG_MAC80211_DEBUG=y
CONFIG_MAC80211_VERBOSE_DEBUG=y
CONFIG_MAC80211_LOWTX_FRAME_DUMP=y
CONFIG_TKIP_DEBUG=y
CONFIG_MAC80211_DEBUG_COUNTERS=y
CONFIG_MAC80211_IBSS_DEBUG=y
CONFIG_MAC80211_VERBOSE_PS_DEBUG=y
CONFIG_IEEE80211=m
CONFIG_IEEE80211_DEBUG=y
CONFIG_IEEE80211_CRYPT_WEP=m
CONFIG_IEEE80211_CRYPT_CCMP=m
CONFIG_IEEE80211_CRYPT_TKIP=m
CONFIG_IEEE80211_SOFTMAC=m
CONFIG_IEEE80211_SOFTMAC_DEBUG=y
# CONFIG_RFKILL is not set
# CONFIG_NET_9P is not set
#
# Device Drivers
#
#
# Generic Driver Options
#
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=m
CONFIG_DEBUG_DRIVER=y
CONFIG_DEBUG_DEVRES=y
# CONFIG_SYS_HYPERVISOR is not set
# CONFIG_CONNECTOR is not set
# CONFIG_MTD is not set
# CONFIG_PARPORT is not set
CONFIG_PNP=y
CONFIG_PNP_DEBUG=y
#
# Protocols
#
CONFIG_PNPACPI=y
# CONFIG_BLK_DEV is not set
# CONFIG_MISC_DEVICES is not set
# CONFIG_IDE is not set
#
# SCSI device support
#
CONFIG_RAID_ATTRS=m
CONFIG_SCSI=m
CONFIG_SCSI_DMA=y
CONFIG_SCSI_TGT=m
CONFIG_SCSI_NETLINK=y
#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=m
CONFIG_CHR_DEV_ST=m
CONFIG_CHR_DEV_OSST=m
CONFIG_BLK_DEV_SR=m
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_CHR_DEV_SCH=m
#
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
#
CONFIG_SCSI_MULTI_LUN=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y
CONFIG_SCSI_SCAN_ASYNC=y
CONFIG_SCSI_WAIT_SCAN=m
#
# SCSI Transports
#
CONFIG_SCSI_SPI_ATTRS=m
CONFIG_SCSI_FC_ATTRS=m
CONFIG_SCSI_ISCSI_ATTRS=m
CONFIG_SCSI_SAS_ATTRS=m
CONFIG_SCSI_SAS_LIBSAS=m
CONFIG_SCSI_SAS_LIBSAS_DEBUG=y
CONFIG_SCSI_SRP_ATTRS=m
CONFIG_SCSI_SRP_TGT_ATTRS=y
CONFIG_SCSI_LOWLEVEL=y
CONFIG_BLK_DEV_3W_XXXX_RAID=m
CONFIG_SCSI_3W_9XXX=m
CONFIG_SCSI_ACARD=m
CONFIG_SCSI_AACRAID=m
CONFIG_SCSI_AIC7XXX=m
CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
CONFIG_AIC7XXX_RESET_DELAY_MS=5000
CONFIG_AIC7XXX_DEBUG_ENABLE=y
CONFIG_AIC7XXX_DEBUG_MASK=0
CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
CONFIG_SCSI_AIC7XXX_OLD=m
CONFIG_SCSI_AIC79XX=m
CONFIG_AIC79XX_CMDS_PER_DEVICE=32
CONFIG_AIC79XX_RESET_DELAY_MS=5000
CONFIG_AIC79XX_DEBUG_ENABLE=y
CONFIG_AIC79XX_DEBUG_MASK=0
CONFIG_AIC79XX_REG_PRETTY_PRINT=y
CONFIG_SCSI_AIC94XX=m
CONFIG_AIC94XX_DEBUG=y
CONFIG_SCSI_ARCMSR=m
CONFIG_MEGARAID_NEWGEN=y
CONFIG_MEGARAID_MM=m
CONFIG_MEGARAID_MAILBOX=m
CONFIG_MEGARAID_LEGACY=m
CONFIG_MEGARAID_SAS=m
CONFIG_SCSI_HPTIOP=m
CONFIG_SCSI_BUSLOGIC=m
CONFIG_SCSI_OMIT_FLASHPOINT=y
CONFIG_SCSI_DMX3191D=m
CONFIG_SCSI_EATA=m
CONFIG_SCSI_EATA_TAGGED_QUEUE=y
CONFIG_SCSI_EATA_LINKED_COMMANDS=y
CONFIG_SCSI_EATA_MAX_TAGS=16
CONFIG_SCSI_FUTURE_DOMAIN=m
CONFIG_SCSI_GDTH=m
CONFIG_SCSI_IPS=m
CONFIG_SCSI_INITIO=m
CONFIG_SCSI_INIA100=m
CONFIG_SCSI_STEX=m
CONFIG_SCSI_SYM53C8XX_2=m
CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
CONFIG_SCSI_SYM53C8XX_MMIO=y
CONFIG_SCSI_QLOGIC_1280=m
CONFIG_SCSI_QLA_FC=m
CONFIG_SCSI_QLA_ISCSI=m
CONFIG_SCSI_LPFC=m
CONFIG_SCSI_DC395x=m
CONFIG_SCSI_DC390T=m
CONFIG_SCSI_DEBUG=m
CONFIG_SCSI_SRP=m
CONFIG_SCSI_LOWLEVEL_PCMCIA=y
CONFIG_PCMCIA_FDOMAIN=m
CONFIG_PCMCIA_QLOGIC=m
CONFIG_PCMCIA_SYM53C500=m
# CONFIG_ATA is not set
# CONFIG_MD is not set
# CONFIG_FUSION is not set
#
# IEEE 1394 (FireWire) support
#
CONFIG_FIREWIRE=m
CONFIG_FIREWIRE_OHCI=m
CONFIG_FIREWIRE_SBP2=m
CONFIG_IEEE1394=m
#
# Subsystem Options
#
CONFIG_IEEE1394_VERBOSEDEBUG=y
#
# Controllers
#
CONFIG_IEEE1394_PCILYNX=m
CONFIG_IEEE1394_OHCI1394=m
#
# Protocols
#
CONFIG_IEEE1394_VIDEO1394=m
CONFIG_IEEE1394_SBP2=m
CONFIG_IEEE1394_SBP2_PHYS_DMA=y
# CONFIG_IEEE1394_ETH1394_ROM_ENTRY is not set
CONFIG_IEEE1394_DV1394=m
CONFIG_IEEE1394_RAWIO=m
# CONFIG_I2O is not set
# CONFIG_MACINTOSH_DRIVERS is not set
# CONFIG_NETDEVICES is not set
CONFIG_PPP=m
CONFIG_NETPOLL=y
CONFIG_NETPOLL_TRAP=y
# CONFIG_ISDN is not set
# CONFIG_PHONE is not set
#
# Input device support
#
CONFIG_INPUT=y
CONFIG_INPUT_FF_MEMLESS=m
CONFIG_INPUT_POLLDEV=m
#
# Userland interfaces
#
CONFIG_INPUT_MOUSEDEV=m
CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
CONFIG_INPUT_JOYDEV=m
CONFIG_INPUT_TSDEV=m
CONFIG_INPUT_TSDEV_SCREEN_X=240
CONFIG_INPUT_TSDEV_SCREEN_Y=320
CONFIG_INPUT_EVDEV=m
CONFIG_INPUT_EVBUG=m
#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=m
CONFIG_KEYBOARD_SUNKBD=m
CONFIG_KEYBOARD_LKKBD=m
CONFIG_KEYBOARD_XTKBD=m
CONFIG_KEYBOARD_NEWTON=m
CONFIG_KEYBOARD_STOWAWAY=m
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=m
CONFIG_MOUSE_PS2_ALPS=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_LIFEBOOK=y
CONFIG_MOUSE_PS2_TRACKPOINT=y
CONFIG_MOUSE_PS2_TOUCHKIT=y
CONFIG_MOUSE_SERIAL=m
CONFIG_MOUSE_VSXXXAA=m
CONFIG_INPUT_JOYSTICK=y
CONFIG_JOYSTICK_ANALOG=m
CONFIG_JOYSTICK_A3D=m
CONFIG_JOYSTICK_ADI=m
CONFIG_JOYSTICK_COBRA=m
CONFIG_JOYSTICK_GF2K=m
CONFIG_JOYSTICK_GRIP=m
CONFIG_JOYSTICK_GRIP_MP=m
CONFIG_JOYSTICK_GUILLEMOT=m
CONFIG_JOYSTICK_INTERACT=m
CONFIG_JOYSTICK_SIDEWINDER=m
CONFIG_JOYSTICK_TMDC=m
CONFIG_JOYSTICK_IFORCE=m
CONFIG_JOYSTICK_IFORCE_232=y
CONFIG_JOYSTICK_WARRIOR=m
CONFIG_JOYSTICK_MAGELLAN=m
CONFIG_JOYSTICK_SPACEORB=m
CONFIG_JOYSTICK_SPACEBALL=m
CONFIG_JOYSTICK_STINGER=m
CONFIG_JOYSTICK_TWIDJOY=m
CONFIG_JOYSTICK_JOYDUMP=m
CONFIG_INPUT_TABLET=y
CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_ADS7846=m
CONFIG_TOUCHSCREEN_FUJITSU=m
CONFIG_TOUCHSCREEN_GUNZE=m
CONFIG_TOUCHSCREEN_ELO=m
CONFIG_TOUCHSCREEN_MTOUCH=m
CONFIG_TOUCHSCREEN_MK712=m
CONFIG_TOUCHSCREEN_PENMOUNT=m
CONFIG_TOUCHSCREEN_TOUCHRIGHT=m
CONFIG_TOUCHSCREEN_TOUCHWIN=m
CONFIG_TOUCHSCREEN_UCB1400=m
CONFIG_INPUT_MISC=y
CONFIG_INPUT_PCSPKR=m
CONFIG_INPUT_ATLAS_BTNS=m
CONFIG_INPUT_UINPUT=m
#
# Hardware I/O ports
#
CONFIG_SERIO=m
CONFIG_SERIO_I8042=m
CONFIG_SERIO_SERPORT=m
CONFIG_SERIO_CT82C710=m
CONFIG_SERIO_PCIPS2=m
CONFIG_SERIO_LIBPS2=m
CONFIG_SERIO_RAW=m
CONFIG_GAMEPORT=m
CONFIG_GAMEPORT_NS558=m
CONFIG_GAMEPORT_L4=m
CONFIG_GAMEPORT_EMU10K1=m
CONFIG_GAMEPORT_FM801=m
#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
CONFIG_VT_HW_CONSOLE_BINDING=y
CONFIG_SERIAL_NONSTANDARD=y
CONFIG_COMPUTONE=m
CONFIG_ROCKETPORT=m
CONFIG_CYCLADES=m
CONFIG_CYZ_INTR=y
CONFIG_DIGIEPCA=m
CONFIG_MOXA_INTELLIO=m
CONFIG_MOXA_SMARTIO=m
CONFIG_MOXA_SMARTIO_NEW=m
CONFIG_ISI=m
CONFIG_SYNCLINK=m
CONFIG_SYNCLINKMP=m
CONFIG_SYNCLINK_GT=m
CONFIG_N_HDLC=m
CONFIG_SPECIALIX=m
CONFIG_SPECIALIX_RTSCTS=y
CONFIG_SX=m
CONFIG_RIO=m
CONFIG_RIO_OLDPCI=y
CONFIG_STALDRV=y
CONFIG_NOZOMI=m
#
# Serial drivers
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_FIX_EARLYCON_MEM=y
CONFIG_SERIAL_8250_PCI=m
CONFIG_SERIAL_8250_PNP=m
CONFIG_SERIAL_8250_CS=m
CONFIG_SERIAL_8250_NR_UARTS=4
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
CONFIG_SERIAL_8250_EXTENDED=y
CONFIG_SERIAL_8250_MANY_PORTS=y
CONFIG_SERIAL_8250_SHARE_IRQ=y
CONFIG_SERIAL_8250_DETECT_IRQ=y
CONFIG_SERIAL_8250_RSA=y
#
# Non-8250 serial port support
#
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_SERIAL_JSM=m
CONFIG_UNIX98_PTYS=y
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=256
CONFIG_IPMI_HANDLER=m
CONFIG_IPMI_PANIC_EVENT=y
CONFIG_IPMI_PANIC_STRING=y
CONFIG_IPMI_DEVICE_INTERFACE=m
CONFIG_IPMI_SI=m
CONFIG_IPMI_WATCHDOG=m
CONFIG_IPMI_POWEROFF=m
CONFIG_HW_RANDOM=m
CONFIG_HW_RANDOM_INTEL=m
CONFIG_HW_RANDOM_AMD=m
CONFIG_NVRAM=m
CONFIG_RTC=m
CONFIG_GEN_RTC=m
CONFIG_GEN_RTC_X=y
CONFIG_R3964=m
CONFIG_APPLICOM=m
CONFIG_AGP=y
CONFIG_AGP_AMD64=y
CONFIG_AGP_INTEL=m
CONFIG_AGP_SIS=m
CONFIG_AGP_VIA=m
CONFIG_DRM=m
CONFIG_DRM_TDFX=m
CONFIG_DRM_R128=m
CONFIG_DRM_RADEON=m
CONFIG_DRM_I810=m
CONFIG_DRM_I830=m
CONFIG_DRM_I915=m
CONFIG_DRM_MGA=m
CONFIG_DRM_SIS=m
CONFIG_DRM_VIA=m
CONFIG_DRM_SAVAGE=m
#
# PCMCIA character devices
#
CONFIG_SYNCLINK_CS=m
CONFIG_CARDMAN_4000=m
CONFIG_CARDMAN_4040=m
CONFIG_IPWIRELESS_CS=m
CONFIG_MWAVE=m
CONFIG_PC8736x_GPIO=m
CONFIG_NSC_GPIO=m
CONFIG_RAW_DRIVER=m
CONFIG_MAX_RAW_DEVS=256
CONFIG_HPET=y
CONFIG_HPET_RTC_IRQ=y
CONFIG_HPET_MMAP=y
CONFIG_HANGCHECK_TIMER=m
CONFIG_TCG_TPM=m
CONFIG_TCG_TIS=m
CONFIG_TCG_NSC=m
CONFIG_TCG_ATMEL=m
CONFIG_TCG_INFINEON=m
CONFIG_TELCLOCK=m
CONFIG_DEVPORT=y
CONFIG_I2C=m
CONFIG_I2C_BOARDINFO=y
# CONFIG_I2C_CHARDEV is not set
#
# I2C Algorithms
#
CONFIG_I2C_ALGOBIT=m
CONFIG_I2C_ALGOPCF=m
CONFIG_I2C_ALGOPCA=m
#
# I2C Hardware Bus support
#
CONFIG_I2C_ALI1535=m
CONFIG_I2C_ALI1563=m
CONFIG_I2C_ALI15X3=m
CONFIG_I2C_AMD756=m
CONFIG_I2C_AMD756_S4882=m
CONFIG_I2C_AMD8111=m
CONFIG_I2C_I801=m
CONFIG_I2C_I810=m
CONFIG_I2C_PIIX4=m
CONFIG_I2C_NFORCE2=m
CONFIG_I2C_OCORES=m
CONFIG_I2C_PARPORT_LIGHT=m
CONFIG_I2C_PROSAVAGE=m
CONFIG_I2C_SAVAGE4=m
CONFIG_I2C_SIMTEC=m
CONFIG_I2C_SIS5595=m
CONFIG_I2C_SIS630=m
CONFIG_I2C_SIS96X=m
CONFIG_I2C_TAOS_EVM=m
CONFIG_I2C_STUB=m
CONFIG_I2C_VIA=m
CONFIG_I2C_VIAPRO=m
CONFIG_I2C_VOODOO3=m
#
# Miscellaneous I2C Chip support
#
CONFIG_SENSORS_DS1337=m
CONFIG_SENSORS_DS1374=m
CONFIG_DS1682=m
CONFIG_SENSORS_EEPROM=m
CONFIG_SENSORS_PCF8574=m
CONFIG_SENSORS_PCA9539=m
CONFIG_SENSORS_PCF8591=m
CONFIG_SENSORS_MAX6875=m
CONFIG_SENSORS_TSL2550=m
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set
#
# SPI support
#
CONFIG_SPI=y
CONFIG_SPI_DEBUG=y
CONFIG_SPI_MASTER=y
#
# SPI Master Controller Drivers
#
CONFIG_SPI_BITBANG=m
#
# SPI Protocol Masters
#
CONFIG_SPI_SPIDEV=m
# CONFIG_W1 is not set
# CONFIG_POWER_SUPPLY is not set
# CONFIG_HWMON is not set
# CONFIG_WATCHDOG is not set
#
# Sonics Silicon Backplane
#
CONFIG_SSB_POSSIBLE=y
# CONFIG_SSB is not set
#
# Multifunction device drivers
#
# CONFIG_MFD_SM501 is not set
#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
# CONFIG_DAB is not set
#
# Graphics support
#
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_LCD_CLASS_DEVICE=m
CONFIG_BACKLIGHT_CLASS_DEVICE=m
CONFIG_BACKLIGHT_PROGEAR=m
CONFIG_BACKLIGHT_CARILLO_RANCH=m
#
# Display device support
#
CONFIG_DISPLAY_SUPPORT=m
#
# Display hardware drivers
#
CONFIG_VGASTATE=m
CONFIG_VIDEO_OUTPUT_CONTROL=m
CONFIG_FB=m
CONFIG_FIRMWARE_EDID=y
CONFIG_FB_DDC=m
CONFIG_FB_CFB_FILLRECT=m
CONFIG_FB_CFB_COPYAREA=m
CONFIG_FB_CFB_IMAGEBLIT=m
CONFIG_FB_SYS_FILLRECT=m
CONFIG_FB_SYS_COPYAREA=m
CONFIG_FB_SYS_IMAGEBLIT=m
CONFIG_FB_SYS_FOPS=m
CONFIG_FB_DEFERRED_IO=y
CONFIG_FB_SVGALIB=m
# CONFIG_FB_MACMODES is not set
CONFIG_FB_BACKLIGHT=y
CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_TILEBLITTING=y
#
# Frame buffer hardware drivers
#
CONFIG_FB_CIRRUS=m
CONFIG_FB_PM2=m
CONFIG_FB_PM2_FIFO_DISCONNECT=y
CONFIG_FB_CYBER2000=m
CONFIG_FB_ARC=m
CONFIG_FB_VGA16=m
CONFIG_FB_HECUBA=m
CONFIG_FB_HGA=m
CONFIG_FB_HGA_ACCEL=y
CONFIG_FB_S1D13XXX=m
CONFIG_FB_NVIDIA=m
CONFIG_FB_NVIDIA_I2C=y
CONFIG_FB_NVIDIA_DEBUG=y
CONFIG_FB_NVIDIA_BACKLIGHT=y
CONFIG_FB_RIVA=m
CONFIG_FB_RIVA_I2C=y
CONFIG_FB_RIVA_DEBUG=y
CONFIG_FB_RIVA_BACKLIGHT=y
CONFIG_FB_LE80578=m
CONFIG_FB_CARILLO_RANCH=m
CONFIG_FB_INTEL=m
CONFIG_FB_INTEL_DEBUG=y
CONFIG_FB_INTEL_I2C=y
CONFIG_FB_MATROX=m
CONFIG_FB_MATROX_MILLENIUM=y
CONFIG_FB_MATROX_MYSTIQUE=y
CONFIG_FB_MATROX_G=y
CONFIG_FB_MATROX_I2C=m
CONFIG_FB_MATROX_MAVEN=m
CONFIG_FB_MATROX_MULTIHEAD=y
CONFIG_FB_RADEON=m
CONFIG_FB_RADEON_I2C=y
CONFIG_FB_RADEON_BACKLIGHT=y
CONFIG_FB_RADEON_DEBUG=y
CONFIG_FB_ATY128=m
CONFIG_FB_ATY128_BACKLIGHT=y
CONFIG_FB_ATY=m
CONFIG_FB_ATY_CT=y
CONFIG_FB_ATY_GENERIC_LCD=y
CONFIG_FB_ATY_GX=y
CONFIG_FB_ATY_BACKLIGHT=y
CONFIG_FB_S3=m
CONFIG_FB_SAVAGE=m
CONFIG_FB_SAVAGE_I2C=y
CONFIG_FB_SAVAGE_ACCEL=y
CONFIG_FB_SIS=m
CONFIG_FB_SIS_300=y
CONFIG_FB_SIS_315=y
CONFIG_FB_NEOMAGIC=m
CONFIG_FB_KYRO=m
CONFIG_FB_3DFX=m
CONFIG_FB_3DFX_ACCEL=y
CONFIG_FB_VOODOO1=m
CONFIG_FB_VT8623=m
CONFIG_FB_TRIDENT=m
CONFIG_FB_TRIDENT_ACCEL=y
CONFIG_FB_ARK=m
CONFIG_FB_PM3=m
CONFIG_FB_GEODE=y
CONFIG_FB_GEODE_LX=m
CONFIG_FB_GEODE_GX=m
CONFIG_FB_GEODE_GX_SET_FBSIZE=y
CONFIG_FB_GEODE_GX_FBSIZE=0x1600000
CONFIG_FB_GEODE_GX1=m
CONFIG_FB_VIRTUAL=m
#
# Console display driver support
#
CONFIG_VGA_CONSOLE=y
CONFIG_VGACON_SOFT_SCROLLBACK=y
CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64
CONFIG_VIDEO_SELECT=y
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=m
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
CONFIG_FONTS=y
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
CONFIG_FONT_6x11=y
CONFIG_FONT_7x14=y
CONFIG_FONT_PEARL_8x8=y
CONFIG_FONT_ACORN_8x8=y
CONFIG_FONT_MINI_4x6=y
CONFIG_FONT_SUN8x16=y
CONFIG_FONT_SUN12x22=y
CONFIG_FONT_10x18=y
CONFIG_LOGO=y
CONFIG_LOGO_LINUX_MONO=y
CONFIG_LOGO_LINUX_VGA16=y
CONFIG_LOGO_LINUX_CLUT224=y
#
# Sound
#
# CONFIG_SOUND is not set
CONFIG_AC97_BUS=m
# CONFIG_HID_SUPPORT is not set
# CONFIG_USB_SUPPORT is not set
# CONFIG_MMC is not set
# CONFIG_NEW_LEDS is not set
# CONFIG_INFINIBAND is not set
# CONFIG_EDAC is not set
# CONFIG_RTC_CLASS is not set
# CONFIG_DMADEVICES is not set
# CONFIG_VIRTUALIZATION is not set
#
# Userspace I/O
#
CONFIG_UIO=m
CONFIG_UIO_CIF=m
#
# Firmware Drivers
#
CONFIG_EDD=m
CONFIG_DELL_RBU=m
CONFIG_DCDBAS=m
CONFIG_DMIID=y
#
# File systems
#
# CONFIG_EXT2_FS is not set
# CONFIG_EXT3_FS is not set
# CONFIG_EXT4DEV_FS is not set
# CONFIG_REISER4_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
# CONFIG_XFS_FS is not set
# CONFIG_GFS2_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_INOTIFY is not set
# CONFIG_QUOTA is not set
# CONFIG_DNOTIFY is not set
# CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS is not set
# CONFIG_FUSE_FS is not set
#
# CD-ROM/DVD Filesystems
#
# CONFIG_ISO9660_FS is not set
CONFIG_UDF_FS=m
#
# DOS/FAT/NT Filesystems
#
# CONFIG_MSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_NTFS_FS is not set
#
# Pseudo filesystems
#
# CONFIG_PROC_FS is not set
# CONFIG_SYSFS is not set
# CONFIG_TMPFS is not set
# CONFIG_HUGETLBFS is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
#
# Layered filesystems
#
# CONFIG_ECRYPT_FS is not set
# CONFIG_UNION_FS is not set
#
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_CRAMFS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set
#
# Network File Systems
#
#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
#
# Native Language Support
#
# CONFIG_NLS is not set
#
# Instrumentation Support
#
# CONFIG_PROFILING is not set
# CONFIG_KPROBES is not set
#
# Kernel hacking
#
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_PRINTK_TIME=y
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_MAGIC_SYSRQ=y
CONFIG_UNUSED_SYMBOLS=y
CONFIG_PAGE_OWNER=y
CONFIG_HEADERS_CHECK=y
CONFIG_DEBUG_KERNEL=y
CONFIG_DEBUG_SHIRQ=y
CONFIG_DETECT_SOFTLOCKUP=y
CONFIG_SLUB_DEBUG_ON=y
CONFIG_DEBUG_RT_MUTEXES=y
CONFIG_DEBUG_PI_LIST=y
CONFIG_RT_MUTEX_TESTER=y
CONFIG_DEBUG_SPINLOCK=y
CONFIG_DEBUG_MUTEXES=y
CONFIG_DEBUG_LOCK_ALLOC=y
CONFIG_PROVE_LOCKING=y
CONFIG_LOCKDEP=y
CONFIG_LOCK_STAT=y
CONFIG_DEBUG_LOCKDEP=y
CONFIG_TRACE_IRQFLAGS=y
CONFIG_DEBUG_SPINLOCK_SLEEP=y
CONFIG_DEBUG_LOCKING_API_SELFTESTS=y
CONFIG_STACKTRACE=y
CONFIG_DEBUG_KOBJECT=y
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_VM=y
CONFIG_DEBUG_LIST=y
CONFIG_FRAME_POINTER=y
CONFIG_UNWIND_INFO=y
CONFIG_STACK_UNWIND=y
CONFIG_PROFILE_LIKELY=y
CONFIG_FORCED_INLINING=y
CONFIG_BOOT_PRINTK_DELAY=y
CONFIG_DEBUG_SYNCHRO_TEST=m
CONFIG_RCU_TORTURE_TEST=m
CONFIG_FAULT_INJECTION=y
CONFIG_FAILSLAB=y
CONFIG_FAIL_PAGE_ALLOC=y
CONFIG_FAIL_MAKE_REQUEST=y
CONFIG_WANT_EXTRA_DEBUG_INFORMATION=y
CONFIG_KGDB=y
CONFIG_KGDB_ARCH_HAS_SHADOW_INFO=y
CONFIG_KGDB_CONSOLE=y
# CONFIG_KGDB_ONLY_MODULES is not set
CONFIG_KGDB_8250_NOMODULE=y
# CONFIG_KGDBOE_NOMODULE is not set
# CONFIG_KGDB_MPSC is not set
# CONFIG_KGDB_CPM_UART is not set
# CONFIG_KGDB_SIBYTE is not set
# CONFIG_KGDB_TXX9 is not set
# CONFIG_KGDB_SH_SCI is not set
# CONFIG_KGDB_AMBA_PL011 is not set
# CONFIG_KGDB_PXA_SERIAL is not set
CONFIG_KGDBOE=m
CONFIG_KGDB_8250=y
CONFIG_KGDB_SIMPLE_SERIAL=y
CONFIG_KGDB_BAUDRATE=115200
CONFIG_KGDB_PORT_NUM=1
CONFIG_DEBUG_RODATA=y
CONFIG_IOMMU_DEBUG=y
CONFIG_IOMMU_LEAK=y
CONFIG_DEBUG_STACKOVERFLOW=y
CONFIG_DEBUG_STACK_USAGE=y
#
# Security options
#
CONFIG_KEYS=y
# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
CONFIG_CRYPTO=y
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_BLKCIPHER=m
CONFIG_CRYPTO_HASH=m
CONFIG_CRYPTO_MANAGER=m
CONFIG_CRYPTO_HMAC=m
# CONFIG_CRYPTO_XCBC is not set
# CONFIG_CRYPTO_NULL is not set
# CONFIG_CRYPTO_MD4 is not set
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA1=m
# CONFIG_CRYPTO_SHA256 is not set
# CONFIG_CRYPTO_SHA512 is not set
# CONFIG_CRYPTO_WP512 is not set
# CONFIG_CRYPTO_TGR192 is not set
CONFIG_CRYPTO_GF128MUL=m
CONFIG_CRYPTO_ECB=m
CONFIG_CRYPTO_CBC=m
CONFIG_CRYPTO_PCBC=m
# CONFIG_CRYPTO_LRW is not set
# CONFIG_CRYPTO_CRYPTD is not set
CONFIG_CRYPTO_DES=m
CONFIG_CRYPTO_FCRYPT=m
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_TWOFISH_X86_64 is not set
# CONFIG_CRYPTO_SERPENT is not set
CONFIG_CRYPTO_AES=m
# CONFIG_CRYPTO_AES_X86_64 is not set
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
# CONFIG_CRYPTO_TEA is not set
CONFIG_CRYPTO_ARC4=m
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_ANUBIS is not set
CONFIG_CRYPTO_DEFLATE=m
CONFIG_CRYPTO_MICHAEL_MIC=m
CONFIG_CRYPTO_CRC32C=m
# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_TEST is not set
# CONFIG_CRYPTO_HW is not set
#
# Library routines
#
CONFIG_BITREVERSE=y
CONFIG_CRC_CCITT=m
CONFIG_CRC16=m
CONFIG_CRC_ITU_T=m
CONFIG_CRC32=y
CONFIG_CRC7=m
CONFIG_LIBCRC32C=m
CONFIG_ZLIB_INFLATE=m
CONFIG_ZLIB_DEFLATE=m
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y
CONFIG_CHECK_SIGNATURE=y
^ permalink raw reply
* Re: [PATCH 6/7 v2] fs_enet: Be an of_platform device when CONFIG_PPC_CPM_NEW_BINDING is set.
From: Vitaly Bordug @ 2007-08-21 9:01 UTC (permalink / raw)
To: Scott Wood; +Cc: jgarzik, netdev, linuxppc-dev
In-Reply-To: <20070817181718.GA15792@ld0162-tx32.am.freescale.net>
On Fri, 17 Aug 2007 13:17:18 -0500
Scott Wood wrote:
> The existing OF glue code was crufty and broken. Rather than fix it,
> it will be removed, and the ethernet driver now talks to the device
> tree directly.
>
A bit short description, I'd rather expect some specific improvements list,
that are now up and running using device tree. Or if it is just move to new
infrastucture, let's state that, too.
Some other notes below.
> The old, non-CONFIG_PPC_CPM_NEW_BINDING code can go away once CPM
> platforms are dropped from arch/ppc (which will hopefully be soon),
> and existing arch/powerpc boards that I wasn't able to test on for
> this patchset get converted (which should be even sooner).
>
> mii-bitbang.c now also uses the generic bitbang code.
>
> Signed-off-by: Scott Wood <scottwood@freescale.com>
> ---
> Sorry, the previous version of this patch had bb_ops in the wrong
> place, and wouldn't build when not using the new binding.
>
> drivers/net/fs_enet/Kconfig | 1 +
> drivers/net/fs_enet/fs_enet-main.c | 286 ++++++++++++++++++++++--
> drivers/net/fs_enet/fs_enet.h | 55 +-----
> drivers/net/fs_enet/mac-fcc.c | 89 ++++++--
> drivers/net/fs_enet/mac-fec.c | 23 ++-
> drivers/net/fs_enet/mac-scc.c | 55 +++--
> drivers/net/fs_enet/mii-bitbang.c | 438
> ++++++++++++++++-------------------
> drivers/net/fs_enet/mii-fec.c | 140 ++++++++++++-
> include/linux/fs_enet_pd.h | 5 + 9 files changed, 740
> insertions(+), 352 deletions(-)
>
> diff --git a/drivers/net/fs_enet/Kconfig b/drivers/net/fs_enet/Kconfig
> index e27ee21..2765e49 100644
> --- a/drivers/net/fs_enet/Kconfig
> +++ b/drivers/net/fs_enet/Kconfig
> @@ -11,6 +11,7 @@ config FS_ENET_HAS_SCC
> config FS_ENET_HAS_FCC
> bool "Chip has an FCC usable for ethernet"
> depends on FS_ENET && CPM2
> + select MDIO_BITBANG
> default y
>
> config FS_ENET_HAS_FEC
> diff --git a/drivers/net/fs_enet/fs_enet-main.c
> b/drivers/net/fs_enet/fs_enet-main.c index 0ec30a8..7bf29a2 100644
> --- a/drivers/net/fs_enet/fs_enet-main.c
> +++ b/drivers/net/fs_enet/fs_enet-main.c
> @@ -44,12 +44,18 @@
> #include <asm/irq.h>
> #include <asm/uaccess.h>
>
> +#ifdef CONFIG_PPC_CPM_NEW_BINDING
> +#include <linux/of_platform.h>
> +#endif
> +
> #include "fs_enet.h"
>
> /*************************************************/
>
> +#ifndef CONFIG_PPC_CPM_NEW_BINDING
> static char version[] __devinitdata =
> DRV_MODULE_NAME ".c:v" DRV_MODULE_VERSION " ("
> DRV_MODULE_RELDATE ")" "\n"; +#endif
>
> MODULE_AUTHOR("Pantelis Antoniou <panto@intracom.gr>");
> MODULE_DESCRIPTION("Freescale Ethernet Driver");
> @@ -953,6 +959,7 @@ static int fs_ioctl(struct net_device *dev,
> struct ifreq *rq, int cmd) extern int fs_mii_connect(struct
> net_device *dev); extern void fs_mii_disconnect(struct net_device
> *dev);
> +#ifndef CONFIG_PPC_CPM_NEW_BINDING
> static struct net_device *fs_init_instance(struct device *dev,
> struct fs_platform_info *fpi)
> {
> @@ -1132,6 +1139,7 @@ static int fs_cleanup_instance(struct
> net_device *ndev)
> return 0;
> }
> +#endif
>
> /**************************************************************************************/
>
> @@ -1140,35 +1148,279 @@ void *fs_enet_immap = NULL;
>
> static int setup_immap(void)
> {
> - phys_addr_t paddr = 0;
> - unsigned long size = 0;
> -
> #ifdef CONFIG_CPM1
> - paddr = IMAP_ADDR;
> - size = 0x10000; /* map 64K */
> +#ifdef CONFIG_PPC_CPM_NEW_BINDING
> + fs_enet_immap = mpc8xx_immr;
> +#else
> + fs_enet_immap = ioremap(IMAP_ADDR, 0x4000);
> + WARN_ON(!fs_enet_immap);
> #endif
> -
> -#ifdef CONFIG_CPM2
> - paddr = CPM_MAP_ADDR;
> - size = 0x40000; /* map 256 K */
> +#elif defined(CONFIG_CPM2)
> + fs_enet_immap = cpm2_immr;
> #endif
> - fs_enet_immap = ioremap(paddr, size);
> - if (fs_enet_immap == NULL)
> - return -EBADF; /* XXX ahem; maybe just
> BUG_ON? */
> return 0;
> }
>
> +#ifndef CONFIG_PPC_CPM_NEW_BINDING
> static void cleanup_immap(void)
> {
> - if (fs_enet_immap != NULL) {
> - iounmap(fs_enet_immap);
> - fs_enet_immap = NULL;
> - }
> +#if defined(CONFIG_CPM1)
> + iounmap(fs_enet_immap);
> +#endif
> }
> +#endif
>
> /**************************************************************************************/
>
> +#ifdef CONFIG_PPC_CPM_NEW_BINDING
> +static int __devinit find_phy(struct device_node *np,
> + struct fs_platform_info *fpi)
> +{
> + struct device_node *phynode, *mdionode;
> + struct resource res;
> + int ret = 0, len;
> +
> + const u32 *data = of_get_property(np, "phy-handle", &len);
> + if (!data || len != 4)
> + return -EINVAL;
> +
> + phynode = of_find_node_by_phandle(*data);
> + if (!phynode)
> + return -EINVAL;
> +
> + mdionode = of_get_parent(phynode);
> + if (!phynode)
> + goto out_put_phy;
> +
> + ret = of_address_to_resource(mdionode, 0, &res);
> + if (ret)
> + goto out_put_mdio;
> +
> + data = of_get_property(phynode, "reg", &len);
> + if (!data || len != 4)
> + goto out_put_mdio;
> +
> + snprintf(fpi->bus_id, 16, PHY_ID_FMT, res.start, *data);
> +
> +out_put_mdio:
> + of_node_put(mdionode);
> +out_put_phy:
> + of_node_put(phynode);
> + return ret;
> +}
And without phy node?
> +
> +#ifdef CONFIG_FS_ENET_HAS_FEC
> +#define IS_FEC(match) ((match)->data == &fs_fec_ops)
> +#else
> +#define IS_FEC(match) 0
> +#endif
> +
Since we're talking directly with device tree, why bother with CONFIG_ stuff? We are able to figure it out from dts..
> +static int __devinit fs_enet_probe(struct of_device *ofdev,
> + const struct of_device_id *match)
> +{
> + struct net_device *ndev;
> + struct fs_enet_private *fep;
> + struct fs_platform_info *fpi;
> + const u32 *data;
> + const u8 *mac_addr;
> + int privsize, len, ret = -ENODEV;
> +
> + fpi = kzalloc(sizeof(*fpi), GFP_KERNEL);
> + if (!fpi)
> + return -ENOMEM;
> +
> + if (!IS_FEC(match)) {
> + data = of_get_property(ofdev->node,
> "fsl,cpm-command", &len);
> + if (!data || len != 4)
> + goto out_free_fpi;
> +
> + fpi->cp_command = *data;
> + }
> +
> + fpi->rx_ring = 32;
> + fpi->tx_ring = 32;
> + fpi->rx_copybreak = 240;
> + fpi->use_napi = 0;
> + fpi->napi_weight = 17;
> +
move params over to dts?
> + ret = find_phy(ofdev->node, fpi);
> + if (ret)
> + goto out_free_fpi;
> +
so we're hosed without phy node.
> + privsize = sizeof(*fep) +
> + sizeof(struct sk_buff **) *
> + (fpi->rx_ring + fpi->tx_ring);
> +
> + ndev = alloc_etherdev(privsize);
> + if (!ndev) {
> + ret = -ENOMEM;
> + goto out_free_fpi;
> + }
> +
> + SET_MODULE_OWNER(ndev);
> + dev_set_drvdata(&ofdev->dev, ndev);
> +
> + fep = netdev_priv(ndev);
> + fep->dev = &ofdev->dev;
> + fep->fpi = fpi;
> + fep->ops = match->data;
> +
> + ret = fep->ops->setup_data(ndev);
> + if (ret)
> + goto out_free_dev;
> +
> + fep->rx_skbuff = (struct sk_buff **)&fep[1];
> + fep->tx_skbuff = fep->rx_skbuff + fpi->rx_ring;
> +
> + spin_lock_init(&fep->lock);
> + spin_lock_init(&fep->tx_lock);
> +
> + mac_addr = of_get_mac_address(ofdev->node);
> + if (mac_addr)
> + memcpy(ndev->dev_addr, mac_addr, 6);
> +
> + ret = fep->ops->allocate_bd(ndev);
> + if (ret)
> + goto out_cleanup_data;
> +
> + fep->rx_bd_base = fep->ring_base;
> + fep->tx_bd_base = fep->rx_bd_base + fpi->rx_ring;
> +
> + fep->tx_ring = fpi->tx_ring;
> + fep->rx_ring = fpi->rx_ring;
> +
> + ndev->open = fs_enet_open;
> + ndev->hard_start_xmit = fs_enet_start_xmit;
> + ndev->tx_timeout = fs_timeout;
> + ndev->watchdog_timeo = 2 * HZ;
> + ndev->stop = fs_enet_close;
> + ndev->get_stats = fs_enet_get_stats;
> + ndev->set_multicast_list = fs_set_multicast_list;
> + if (fpi->use_napi) {
> + ndev->poll = fs_enet_rx_napi;
> + ndev->weight = fpi->napi_weight;
> + }
> + ndev->ethtool_ops = &fs_ethtool_ops;
> + ndev->do_ioctl = fs_ioctl;
> +
> + init_timer(&fep->phy_timer_list);
> +
> + netif_carrier_off(ndev);
> +
> + ret = register_netdev(ndev);
> + if (ret)
> + goto out_free_bd;
> +
> + printk(KERN_INFO "%s: fs_enet:
> %02x:%02x:%02x:%02x:%02x:%02x\n",
> + ndev->name,
> + ndev->dev_addr[0], ndev->dev_addr[1],
> ndev->dev_addr[2],
> + ndev->dev_addr[3], ndev->dev_addr[4],
> ndev->dev_addr[5]); +
> + return 0;
> +
> +out_free_bd:
> + fep->ops->free_bd(ndev);
> +out_cleanup_data:
> + fep->ops->cleanup_data(ndev);
> +out_free_dev:
> + free_netdev(ndev);
> + dev_set_drvdata(&ofdev->dev, NULL);
> +out_free_fpi:
> + kfree(fpi);
> + return ret;
> +}
> +
> +static int fs_enet_remove(struct of_device *ofdev)
> +{
> + struct net_device *ndev = dev_get_drvdata(&ofdev->dev);
> + struct fs_enet_private *fep = netdev_priv(ndev);
> +
> + unregister_netdev(ndev);
> +
> + fep->ops->free_bd(ndev);
> + fep->ops->cleanup_data(ndev);
> + dev_set_drvdata(fep->dev, NULL);
> +
> + free_netdev(ndev);
> + return 0;
> +}
> +
> +static struct of_device_id fs_enet_match[] = {
> +#ifdef CONFIG_FS_ENET_HAS_SCC
same nagging. Are we able to get rid of Kconfig arcane defining which SoC currently plays the game for fs_enet?
[snip]...
--
Sincerely, Vitaly
^ permalink raw reply
* still not properly working multicast receiving at rtk8110SC (with 23rc3+ your patches)
From: Reither Robert @ 2007-08-21 9:10 UTC (permalink / raw)
To: Francois Romieu; +Cc: netdev
Hi Francois,
i just tested the new kernel 2.6.23rc3 with and without your patches, i cannot find a difference to the behaviour of the previous state ... (22 + your patches)
I still have a very unreliable receiving of multicast packets, only for about 1/3 of my join mc attempts or so i receive them, in the other cases i do not.
Glen Gray also reported the same problems here on list, and i did some conversation.
I'm using a Jetway mini-ITX board 7F4K with VIA C7 processor and he uses a similar platform, also with a C7 cpu, maybe the platform influences the problem ?
Do we have reports on other platforms with the r8110SC and multicast receiving ?
I also tried drivers from realtek homepage (the new 2.x series does not compile under kernel >2.6.20)
The older driver (1.x for kernel 2.4) does work fine for me if i do some changes to the code to fit with kernel 2.6 series (transfered code from older versions which did support 2.6 too).
Greetings
Robert
^ permalink raw reply
* Re: [PATCH 0/24] make atomic_read() behave consistently across all architectures
From: Russell King @ 2007-08-21 7:08 UTC (permalink / raw)
To: Paul E. McKenney
Cc: Segher Boessenkool, Christoph Lameter, Paul Mackerras,
heiko.carstens, horms, linux-kernel, ak, netdev, cfriesen, akpm,
rpjday, Nick Piggin, linux-arch, jesper.juhl, satyam, zlynx,
schwidefsky, Chris Snook, Herbert Xu, davem, Linus Torvalds,
wensong, wjiang
In-Reply-To: <20070821000518.GC7292@linux.vnet.ibm.com>
On Mon, Aug 20, 2007 at 05:05:18PM -0700, Paul E. McKenney wrote:
> On Tue, Aug 21, 2007 at 01:02:01AM +0200, Segher Boessenkool wrote:
> > >>And no, RMW on MMIO isn't "problematic" at all, either.
> > >>
> > >>An RMW op is a read op, a modify op, and a write op, all rolled
> > >>into one opcode. But three actual operations.
> > >
> > >Maybe for some CPUs, but not all. ARM for instance can't use the
> > >load exclusive and store exclusive instructions to MMIO space.
> >
> > Sure, your CPU doesn't have RMW instructions -- how to emulate
> > those if you don't have them is a totally different thing.
>
> I thought that ARM's load exclusive and store exclusive instructions
> were its equivalent of LL and SC, which RISC machines typically use to
> build atomic sequences of instructions -- and which normally cannot be
> applied to MMIO space.
Absolutely correct.
--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of:
^ permalink raw reply
* Re: [PATCH 0/24] make atomic_read() behave consistently across all architectures
From: Paul Mackerras @ 2007-08-21 9:33 UTC (permalink / raw)
To: Russell King
Cc: Segher Boessenkool, Christoph Lameter, heiko.carstens, horms,
linux-kernel, Paul E. McKenney, ak, netdev, cfriesen, akpm,
rpjday, Nick Piggin, linux-arch, jesper.juhl, satyam, zlynx,
schwidefsky, Chris Snook, Herbert Xu, davem, Linus Torvalds,
wensong, wjiang
In-Reply-To: <20070821070555.GA32036@flint.arm.linux.org.uk>
Russell King writes:
> Let me say it more clearly: On ARM, it is impossible to perform atomic
> operations on MMIO space.
Actually, no one is suggesting that we try to do that at all.
The discussion about RMW ops on MMIO space started with a comment
attributed to the gcc developers that one reason why gcc on x86
doesn't use instructions that do RMW ops on volatile variables is that
volatile is used to mark MMIO addresses, and there was some
uncertainty about whether (non-atomic) RMW ops on x86 could be used on
MMIO. This is in regard to the question about why gcc on x86 always
moves a volatile variable into a register before doing anything to it.
So the whole discussion is irrelevant to ARM, PowerPC and any other
architecture except x86[-64].
Paul.
^ permalink raw reply
* Re: ATA over ethernet swapping
From: Pavel Machek @ 2007-08-21 7:42 UTC (permalink / raw)
To: Peter Zijlstra; +Cc: Ed L. Cashin, kernel list, ak, Netdev list
In-Reply-To: <1186991157.20108.47.camel@twins>
Hi!
> > But I'm able to compile kernel (-j 10) on 128MB machine, and I tried
> > cat /dev/zero | grep foo to exhaust memory... and could not reproduce
> > the deadlock. Should I pingflood? Tweak down ammount of atomic memory
> > avaialable to make deadlocks easier to reproduce?
>
> I usually test swap over NFS in the following manner, I setup a regular
> inet service on the machine (apache or a bunch of ncat sockets piping to
> files or something) and run a heavy workload on the machine (128M):
> 2*64M file backed thrashers and 2*64M anonymous thrashers. Then I start
> clients for the regular inet service, wait for a bit, and shut down the
> NFS server.
>
> This makes the machine grind to a halt, I then restart the NFS server,
> wait for it to reconnect and the client to come alive again.
>
> Without the last few swap-over-NFS patches this last bit - getting back
> out of that situation - never happens.
>
> The basic idea is to make connectivity to the machine where swap traffic
> goes very hard (pull a cable, cleanly shut down the server) and to keep
> other network traffic pounding the machine.
Hmm, I could not get swap-over-ata-over-ethernet to break. Maybe I
should not have local / filesystem, because it allows kernel to get
rid of some memory pressure by dropping clean pages? Plus I guess
ata-over-ethernet has some significant advantages, as it works over
ethernet directly, not over IP.
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
^ permalink raw reply
* Re: [PATCH 2/4 - rev2] Add new timeval_to_sec function
From: Bob Beers @ 2007-08-21 9:58 UTC (permalink / raw)
To: Varun Chandramohan
Cc: Stephen Hemminger, davem, netdev, kaber, socketcan, krkumar2,
varuncha
In-Reply-To: <46CA5E75.9050904@linux.vnet.ibm.com>
What if the name of the function was more descriptive of what the
function actually does? Maybe timeval_ceil_sec()?
^ permalink raw reply
* User Services
From: Funny-Files @ 2007-08-21 10:16 UTC (permalink / raw)
To: netdev
Welcome,
Here is your membership info for Funny-Files.
Member Number: 513953157
Temp Login ID: user1813
Your Password ID: oz604
Your temporary Login Info will expire in 24 hours. Please login and change it.
Use this link to change your Login info: http://66.67.1.158/
Welcome,
Technical Services
Funny-Files
^ permalink raw reply
* Re: [PATCH 0/24] make atomic_read() behave consistently across all architectures
From: Andi Kleen @ 2007-08-21 11:37 UTC (permalink / raw)
To: Paul Mackerras
Cc: Russell King, Segher Boessenkool, Christoph Lameter,
heiko.carstens, horms, linux-kernel, Paul E. McKenney, ak, netdev,
cfriesen, akpm, rpjday, Nick Piggin, linux-arch, jesper.juhl,
satyam, zlynx, schwidefsky, Chris Snook, Herbert Xu, davem,
Linus Torvalds, wensong, wjiang
In-Reply-To: <18122.45437.807239.395869@cargo.ozlabs.ibm.com>
On Tue, Aug 21, 2007 at 07:33:49PM +1000, Paul Mackerras wrote:
> So the whole discussion is irrelevant to ARM, PowerPC and any other
> architecture except x86[-64].
It's even irrelevant on x86 because all modifying operations on atomic_t
are coded in inline assembler and will always be RMW no matter
if atomic_t is volatile or not.
[ignoring atomic_set(x, atomic_read(x) + 1) which nobody should do]
The only issue is if atomic_t should have a implicit barrier or not.
My personal opinion is yes -- better safe than sorry. And any code
impact it may have is typically dwarved by the next cache miss anyways,
so it doesn't matter much.
-Andi
^ permalink raw reply
* Re: [PATCH 3/4 - rev 2] Initilize and populate age field
From: Thomas Graf @ 2007-08-21 10:55 UTC (permalink / raw)
To: Varun Chandramohan
Cc: davem, netdev, kaber, socketcan, shemminger, krkumar2, varuncha
In-Reply-To: <20070820134617.1226c97b.varunc@linux.vnet.ibm.com>
* Varun Chandramohan <varunc@linux.vnet.ibm.com> 2007-08-20 13:46
> The age field is filled with the current time at the time of creation of the route. When the routes are dumped
> then the age value stored in the route structure is subtracted from the current time value and the difference is the age expressed in secs.
>
> Signed-off-by: Varun Chandramohan <varunc@linux.vnet.ibm.com>
> @@ -985,6 +987,14 @@ int fib_dump_info(struct sk_buff *skb, u
> NLA_PUT_U32(skb, RTA_FLOW, fi->fib_nh[0].nh_tclassid);
> #endif
> }
> +
> + do_gettimeofday(&tv);
> + if (!*age) {
> + *age = timeval_to_sec(&tv);
> + NLA_PUT_U32(skb, RTA_AGE, *age);
Why don't you take the timestamp at the time of allocating the alias?
This time-since-first-dump is very confusing.
> + } else {
> + NLA_PUT_U32(skb, RTA_AGE, timeval_to_sec(&tv) - *age);
> + }
> #ifdef CONFIG_IP_ROUTE_MULTIPATH
> if (fi->fib_nhs > 1) {
> struct rtnexthop *rtnh;
^ permalink raw reply
* Re: PROBLEM: 2.6.23-rc "NETDEV WATCHDOG: eth0: transmit timed out"
From: Karl Meyer @ 2007-08-21 10:56 UTC (permalink / raw)
To: Francois Romieu; +Cc: linux-kernel, netdev
In-Reply-To: <20070816141122.GA6625@electric-eye.fr.zoreil.com>
fyi:
I do not know whether it is related to the problem, but since using
the version you told me there are these entries is my log:
frege Hangcheck: hangcheck value past margin!
frege Hangcheck: hangcheck value past margin!
frege Hangcheck: hangcheck value past margin!
2007/8/16, Francois Romieu <romieu@fr.zoreil.com>:
> (please do not remove the netdev Cc:)
>
> Francois Romieu <romieu@fr.zoreil.com> :
> [...]
> > If it does not work I'll dissect 0e4851502f846b13b29b7f88f1250c980d57e944
> > tomorrow.
>
> You will find a tgz archive in attachment which contains a serie of patches
> (0001-... to 0005-...) to walk from 6dccd16b7c2703e8bbf8bca62b5cf248332afbe2
> to 0e4851502f846b13b29b7f88f1250c980d57e944 in smaller steps.
>
> Please apply 0001 on top of 6dccd16b7c2703e8bbf8bca62b5cf248332afbe2. If it
> still works, apply 0002 on top of 0001, etc.
>
> --
> Ueimor
>
>
^ permalink raw reply
* ipv4_get_l4proto: Frag of proto 17
From: Meelis Roos @ 2007-08-21 10:56 UTC (permalink / raw)
To: netdev
Yesterdays git snapsot on a normal home PC spams dmesg with the
following line:
ipv4_get_l4proto: Frag of proto 17
--
Meelis Roos (mroos@linux.ee)
^ permalink raw reply
* Re: [PATCH 2/4 - rev2] Add new timeval_to_sec function
From: Varun Chandramohan @ 2007-08-21 11:09 UTC (permalink / raw)
To: Bob Beers
Cc: Stephen Hemminger, davem, netdev, kaber, socketcan, krkumar2,
varuncha
In-Reply-To: <4f6ba3b0708210258k779ff97x87edbb4ace091d0e@mail.gmail.com>
Bob Beers wrote:
> What if the name of the function was more descriptive of what the
> function actually does? Maybe timeval_ceil_sec()?
>
Looks ok, it can be done if everyone is ok with it.
> -
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
^ permalink raw reply
* Re: [PATCH 3/4 - rev 2] Initilize and populate age field
From: Varun Chandramohan @ 2007-08-21 11:22 UTC (permalink / raw)
To: Thomas Graf
Cc: davem, netdev, kaber, socketcan, shemminger, krkumar2, varuncha
In-Reply-To: <20070821105542.GN32236@postel.suug.ch>
Thomas Graf wrote:
> * Varun Chandramohan <varunc@linux.vnet.ibm.com> 2007-08-20 13:46
>
>> The age field is filled with the current time at the time of creation of the route. When the routes are dumped
>> then the age value stored in the route structure is subtracted from the current time value and the difference is the age expressed in secs.
>>
>> Signed-off-by: Varun Chandramohan <varunc@linux.vnet.ibm.com>
>> @@ -985,6 +987,14 @@ int fib_dump_info(struct sk_buff *skb, u
>> NLA_PUT_U32(skb, RTA_FLOW, fi->fib_nh[0].nh_tclassid);
>> #endif
>> }
>> +
>> + do_gettimeofday(&tv);
>> + if (!*age) {
>> + *age = timeval_to_sec(&tv);
>> + NLA_PUT_U32(skb, RTA_AGE, *age);
>>
>
> Why don't you take the timestamp at the time of allocating the alias?
> This time-since-first-dump is very confusing.
>
>
I know its a bit confusing but let me explain the reason. In my first
version patch i used fn_hash_insert() (place where alias is created)as
place to insert my current time in the age field.
This will eventually call fib_dump_info() for inserting the age filed
attribute into the skb. Now in both places i have to call
do_gettimeofday(). Its obvious that i need it in fn_hash_insert(), its
also need in fib_dump_info() as it is the same function called for
retrieving and dumping the age value to the userspace. So as you are
aware that before we dump it to userspace we need to subtract the value
with current time i need to call do_gettimeofday() twice. To avoid this
i did as above.
>> + } else {
>> + NLA_PUT_U32(skb, RTA_AGE, timeval_to_sec(&tv) - *age);
>> + }
>> #ifdef CONFIG_IP_ROUTE_MULTIPATH
>> if (fi->fib_nhs > 1) {
>> struct rtnexthop *rtnh;
>>
> -
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
Regards,
Varun
^ permalink raw reply
* Re: [PATCH 3/4 - rev 2] Initilize and populate age field
From: Thomas Graf @ 2007-08-21 11:27 UTC (permalink / raw)
To: Varun Chandramohan
Cc: davem, netdev, kaber, socketcan, shemminger, krkumar2, varuncha
In-Reply-To: <46CACAFB.8050709@linux.vnet.ibm.com>
* Varun Chandramohan <varunc@linux.vnet.ibm.com> 2007-08-21 16:52
> I know its a bit confusing but let me explain the reason. In my first
> version patch i used fn_hash_insert() (place where alias is created)as
> place to insert my current time in the age field.
> This will eventually call fib_dump_info() for inserting the age filed
> attribute into the skb. Now in both places i have to call
> do_gettimeofday(). Its obvious that i need it in fn_hash_insert(), its
> also need in fib_dump_info() as it is the same function called for
> retrieving and dumping the age value to the userspace. So as you are
> aware that before we dump it to userspace we need to subtract the value
> with current time i need to call do_gettimeofday() twice. To avoid this
> i did as above.
At least put a comment there, it's far from obvious.
^ permalink raw reply
* Re: [PATCH 3/4 - rev 2] Initilize and populate age field
From: Varun Chandramohan @ 2007-08-21 11:32 UTC (permalink / raw)
To: Thomas Graf
Cc: davem, netdev, kaber, socketcan, shemminger, krkumar2, varuncha
In-Reply-To: <20070821112735.GO32236@postel.suug.ch>
Thomas Graf wrote:
> * Varun Chandramohan <varunc@linux.vnet.ibm.com> 2007-08-21 16:52
>
>> I know its a bit confusing but let me explain the reason. In my first
>> version patch i used fn_hash_insert() (place where alias is created)as
>> place to insert my current time in the age field.
>> This will eventually call fib_dump_info() for inserting the age filed
>> attribute into the skb. Now in both places i have to call
>> do_gettimeofday(). Its obvious that i need it in fn_hash_insert(), its
>> also need in fib_dump_info() as it is the same function called for
>> retrieving and dumping the age value to the userspace. So as you are
>> aware that before we dump it to userspace we need to subtract the value
>> with current time i need to call do_gettimeofday() twice. To avoid this
>> i did as above.
>>
>
> At least put a comment there, it's far from obvious.
>
ok, thanks for the suggestion. Ill put a comment on that.
> -
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
^ permalink raw reply
* [ofa-general] Re: [PATCH 0/9 Rev3] Implement batching skb API and support in IPoIB
From: jamal @ 2007-08-21 12:30 UTC (permalink / raw)
To: David Miller
Cc: jagana, gaagaan, jeff, Robert.Olsson, kumarkr, rdreier,
peter.p.waskiewicz.jr, mcarlson, netdev, sri, general, mchan,
tgraf, johnpol, shemminger, kaber, herbert
In-Reply-To: <20070821.001824.105429474.davem@davemloft.net>
On Tue, 2007-21-08 at 00:18 -0700, David Miller wrote:
> Using 16K buffer size really isn't going to keep the pipe full enough
> for TSO.
Why the comparison with TSO (or GSO for that matter)?
Seems to me that is only valid/fair if you have a single flow.
Batching is multi-flow focused (or i should say flow-unaware).
cheers,
jamal
^ permalink raw reply
* [PATCH 2/2] qla3xxx: bugfix: Fix VLAN rx completion handling.
From: Ron Mercer @ 2007-08-21 13:48 UTC (permalink / raw)
To: netdev; +Cc: Ron Mercer
In-Reply-To: <20070820203209.GB4181@linux-7mw0.qlogic.org>
Fix 4032 chip undocumented "feature" where bit-8 is set
if the inbound completion is for a VLAN.
Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
---
drivers/net/qla3xxx.c | 6 ++++++
1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/drivers/net/qla3xxx.c b/drivers/net/qla3xxx.c
index c3fe1c7..ea15131 100755
--- a/drivers/net/qla3xxx.c
+++ b/drivers/net/qla3xxx.c
@@ -2249,6 +2249,12 @@ static int ql_tx_rx_clean(struct ql3_adapter *qdev,
net_rsp = qdev->rsp_current;
rmb();
+ /*
+ * Fix 4032 chipe undocumented "feature" where bit-8 is set if the
+ * inbound completion is for a VLAN.
+ */
+ if (qdev->device_id == QL3032_DEVICE_ID)
+ net_rsp->opcode &= 0x7f;
switch (net_rsp->opcode) {
case OPCODE_OB_MAC_IOCB_FN0:
--
1.5.0.rc4.16.g9e258
^ permalink raw reply related
* [PATCH 1/2] qla3xxx: bugfix: Add memory barrier before accessing rx completion.
From: Ron Mercer @ 2007-08-21 13:48 UTC (permalink / raw)
To: netdev; +Cc: Ron Mercer
In-Reply-To: <20070820203209.GB4181@linux-7mw0.qlogic.org>
Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
---
drivers/net/qla3xxx.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/drivers/net/qla3xxx.c b/drivers/net/qla3xxx.c
index 69da95b..c3fe1c7 100755
--- a/drivers/net/qla3xxx.c
+++ b/drivers/net/qla3xxx.c
@@ -2248,6 +2248,7 @@ static int ql_tx_rx_clean(struct ql3_adapter *qdev,
qdev->rsp_consumer_index) && (work_done < work_to_do)) {
net_rsp = qdev->rsp_current;
+ rmb();
switch (net_rsp->opcode) {
case OPCODE_OB_MAC_IOCB_FN0:
--
1.5.0.rc4.16.g9e258
^ permalink raw reply related
* Re: [PATCH 0/24] make atomic_read() behave consistently across all architectures
From: Chris Snook @ 2007-08-21 13:50 UTC (permalink / raw)
To: David Miller
Cc: torvalds, piggin, satyam, herbert, paulus, clameter,
ilpo.jarvinen, paulmck, stefanr, linux-kernel, linux-arch, netdev,
akpm, ak, heiko.carstens, schwidefsky, wensong, horms, wjiang,
cfriesen, zlynx, rpjday, jesper.juhl, segher
In-Reply-To: <20070821.000404.39159401.davem@davemloft.net>
David Miller wrote:
> From: Linus Torvalds <torvalds@linux-foundation.org>
> Date: Mon, 20 Aug 2007 22:46:47 -0700 (PDT)
>
>> Ie a "barrier()" is likely _cheaper_ than the code generation downside
>> from using "volatile".
>
> Assuming GCC were ever better about the code generation badness
> with volatile that has been discussed here, I much prefer
> we tell GCC "this memory piece changed" rather than "every
> piece of memory has changed" which is what the barrier() does.
>
> I happened to have been scanning a lot of assembler lately to
> track down a gcc-4.2 miscompilation on sparc64, and the barriers
> do hurt quite a bit in some places. Instead of keeping unrelated
> variables around cached in local registers, it reloads everything.
Moore's law is definitely working against us here. Register counts,
pipeline depths, core counts, and clock multipliers are all increasing
in the long run. At some point in the future, barrier() will be
universally regarded as a hammer too big for most purposes. Whether or
not removing it now constitutes premature optimization is arguable, but
I think we should allow such optimization to happen (or not happen) in
architecture-dependent code, and provide a consistent API that doesn't
require the use of such things in arch-independent code where it might
turn into a totally superfluous performance killer depending on what
hardware it gets compiled for.
-- Chris
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox