Netdev List
 help / color / mirror / Atom feed
* Re: [PATCH iproute] ip: support UID range routing.
From: Stephen Hemminger @ 2016-11-29 20:30 UTC (permalink / raw)
  To: Lorenzo Colitti; +Cc: netdev
In-Reply-To: <1478449611-139263-1-git-send-email-lorenzo@google.com>

On Mon,  7 Nov 2016 01:26:51 +0900
Lorenzo Colitti <lorenzo@google.com> wrote:

> - Support adding, deleting and showing IP rules with UID ranges.
> - Support querying per-UID routes via "ip route get uid <UID>".
> 
> UID range routing was added to net-next in 4fb7450683 ("Merge
> branch 'uid-routing'")
> 
> Signed-off-by: Lorenzo Colitti <lorenzo@google.com>

Applied to net-next, will be pushed shortly.

^ permalink raw reply

* Re: [PATCH v3] ethernet :mellanox :mlx4: Replace pci_pool_alloc by pci_pool_zalloc
From: Souptick Joarder @ 2016-11-29 20:29 UTC (permalink / raw)
  To: Yuval Shaia
  Cc: Sergei Shtylyov, yishaih-VPRAkNaXOzVWk0Htik3J/w,
	netdev-u79uwXL29TY76Z2rM5mHXA, linux-rdma-u79uwXL29TY76Z2rM5mHXA,
	Rameshwar Sahu
In-Reply-To: <20161129195811.GA4221-Hxa29pjIrETlQW142y8m19+IiqhCXseY@public.gmane.org>

Hi Yuval,

> v3:
>   - Fixed alignment issues

You mean remove extra empty line?

Yes, I removed the empty line and also I had fixed one alignment issue
which was mentioned
by Sergei in v2 patch.

On Wed, Nov 30, 2016 at 1:28 AM, Yuval Shaia <yuval.shaia-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org> wrote:
> On Wed, Nov 30, 2016 at 01:16:12AM +0530, Souptick Joarder wrote:
>> In mlx4_alloc_cmd_mailbox(), pci_pool_alloc() followed by memset will be
>> replaced by pci_pool_zalloc()
>>
>> Signed-off-by: Souptick joarder <jrdr.linux-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>> ---
>> v3:
>>   - Fixed alignment issues
>
> You mean remove extra empty line?
>
> Reviewed-by: Yuval Shaia <yuval.shaia-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
>
>>
>> v2:
>>   - Address comment from sergei
>>     Alignment was not proper
>>
>>  drivers/net/ethernet/mellanox/mlx4/cmd.c | 6 ++----
>>  1 file changed, 2 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/net/ethernet/mellanox/mlx4/cmd.c b/drivers/net/ethernet/mellanox/mlx4/cmd.c
>> index e36bebc..a49072b4 100644
>> --- a/drivers/net/ethernet/mellanox/mlx4/cmd.c
>> +++ b/drivers/net/ethernet/mellanox/mlx4/cmd.c
>> @@ -2679,15 +2679,13 @@ struct mlx4_cmd_mailbox *mlx4_alloc_cmd_mailbox(struct mlx4_dev *dev)
>>       if (!mailbox)
>>               return ERR_PTR(-ENOMEM);
>>
>> -     mailbox->buf = pci_pool_alloc(mlx4_priv(dev)->cmd.pool, GFP_KERNEL,
>> -                                   &mailbox->dma);
>> +     mailbox->buf = pci_pool_zalloc(mlx4_priv(dev)->cmd.pool, GFP_KERNEL,
>> +                                    &mailbox->dma);
>>       if (!mailbox->buf) {
>>               kfree(mailbox);
>>               return ERR_PTR(-ENOMEM);
>>       }
>>
>> -     memset(mailbox->buf, 0, MLX4_MAILBOX_SIZE);
>> -
>>       return mailbox;
>>  }
>>  EXPORT_SYMBOL_GPL(mlx4_alloc_cmd_mailbox);
>> --
>> 1.9.1
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
>> the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply

* Re: [PATCH] debugfs: improve formatting of debugfs_real_fops()
From: Greg Kroah-Hartman @ 2016-11-29 20:27 UTC (permalink / raw)
  To: Jakub Kicinski; +Cc: netdev, Nicolai Stange, Christian Lamparter
In-Reply-To: <CAJpBn1xRuJYfDewZhOs4GvGpXKxndL+ux5c69ACA4Y4RS+X8kA@mail.gmail.com>

On Tue, Nov 29, 2016 at 12:11:37PM -0800, Jakub Kicinski wrote:
> On Tue, Nov 29, 2016 at 11:58 AM, Greg Kroah-Hartman
> <gregkh@linuxfoundation.org> wrote:
> > On Thu, Nov 10, 2016 at 05:23:49PM +0000, Jakub Kicinski wrote:
> >> Type of debugfs_real_fops() is longer than parameters and
> >> the name, so there is no way to break the declaration nicely.
> >> We have to go over 80 characters.
> >>
> >> Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
> >> ---
> >>  include/linux/debugfs.h | 3 +--
> >>  1 file changed, 1 insertion(+), 2 deletions(-)
> >
> > Doesn't apply to my tree, what did you make this against?
> 
> net-next, sorry, it
> 
> Fixes: 68f929ff2654 ("debugfs: constify argument to debugfs_real_fops()")
> 
> I think that change still haven't propagated out of Dave's tree.  Dave
> didn't take my fix up patch, though, so my plan was to resend it to
> you during the merge window?  Would that make sense?

Sure, that will work.

thanks,

greg k-h

^ permalink raw reply

* 4.9-rc7: (forcedeth?) BUG: sleeping function called from invalid context at kernel/irq/manage.c:110
From: Meelis Roos @ 2016-11-29 20:26 UTC (permalink / raw)
  To: Linux Kernel list, netdev

This is 4.9-rc7 on Sun Ultra 20 (Opteron 175 on NVidia chipset PC with 
NVidia ethernet).

BUG: sleeping function called from invalid context at kernel/irq/manage.c:110

appears twice during bootup - once during usb init when nvidia ethernet 
irq(?) comes in, and orher time during amd64_edac init when nv irq comes 
in.

This is the only kernel so far after 4.8.0 that I have tested so I do 
not know when exactly this started.

Full dmesg:

[    0.000000] Linux version 4.9.0-rc7-00007-g88abd82 (mroos@u20) (gcc version 6.2.1 20161124 (Debian 6.2.1-5) ) #12 SMP Tue Nov 29 16:40:15 EET 2016
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.9.0-rc7-00007-g88abd82 root=/dev/sda1 ro netconsole=1980@192.168.78.12/eth0,1975@192.168.78.2/00:16:3e:67:55:38
[    0.000000] x86/fpu: Legacy x87 FPU detected.
[    0.000000] x86/fpu: Using 'eager' FPU context switches.
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x00000000000977ff] usable
[    0.000000] BIOS-e820: [mem 0x0000000000097800-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000bfedffff] usable
[    0.000000] BIOS-e820: [mem 0x00000000bfee0000-0x00000000bfee2fff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x00000000bfee3000-0x00000000bfeeffff] ACPI data
[    0.000000] BIOS-e820: [mem 0x00000000bfef0000-0x00000000bfefffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000e0000000-0x00000000efffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000ffffffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000013fffffff] usable
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] SMBIOS 2.3 present.
[    0.000000] DMI: Sun Microsystems Sun Ultra 20 Workstation/2864, BIOS 2.3.0  05/15/2008
[    0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000000] AGP: No AGP bridge found
[    0.000000] e820: last_pfn = 0x140000 max_arch_pfn = 0x400000000
[    0.000000] MTRR default type: uncachable
[    0.000000] MTRR fixed ranges enabled:
[    0.000000]   00000-9FFFF write-back
[    0.000000]   A0000-BFFFF uncachable
[    0.000000]   C0000-C7FFF write-protect
[    0.000000]   C8000-FFFFF uncachable
[    0.000000] MTRR variable ranges enabled:
[    0.000000]   0 base 0000000000 mask FF80000000 write-back
[    0.000000]   1 base 0080000000 mask FFC0000000 write-back
[    0.000000]   2 base 00BFF00000 mask FFFFF00000 uncachable
[    0.000000]   3 base 0100000000 mask FFC0000000 write-back
[    0.000000]   4 disabled
[    0.000000]   5 disabled
[    0.000000]   6 disabled
[    0.000000]   7 disabled
[    0.000000] x86/PAT: Configuration [0-7]: WB  WC  UC- UC  WB  WC  UC- WT  
[    0.000000] total RAM covered: 4095M
[    0.000000] Found optimal setting for mtrr clean up
[    0.000000]  gran_size: 64K 	chunk_size: 2M 	num_reg: 4  	lose cover RAM: 0G
[    0.000000] e820: update [mem 0xbff00000-0xffffffff] usable ==> reserved
[    0.000000] e820: last_pfn = 0xbfee0 max_arch_pfn = 0x400000000
[    0.000000] found SMP MP-table at [mem 0x000f3a10-0x000f3a1f] mapped at [ffff8800000f3a10]
[    0.000000] Base memory trampoline at [ffff880000091000] 91000 size 24576
[    0.000000] BRK [0x0245a000, 0x0245afff] PGTABLE
[    0.000000] BRK [0x0245b000, 0x0245bfff] PGTABLE
[    0.000000] BRK [0x0245c000, 0x0245cfff] PGTABLE
[    0.000000] BRK [0x0245d000, 0x0245dfff] PGTABLE
[    0.000000] ACPI: Early table checksum verification disabled
[    0.000000] ACPI: RSDP 0x00000000000F7BC0 000014 (v00 SUNW  )
[    0.000000] ACPI: RSDT 0x00000000BFEE3040 000034 (v01 SUNW   AWRDACPI 42302E31 AWRD 00000000)
[    0.000000] ACPI: FACP 0x00000000BFEE30C0 000074 (v01 SUNW   AWRDACPI 42302E31 AWRD 00000000)
[    0.000000] ACPI: DSDT 0x00000000BFEE3180 00611A (v01 SUNW   AWRDACPI 00001000 MSFT 0100000E)
[    0.000000] ACPI: FACS 0x00000000BFEE0000 000040
[    0.000000] ACPI: SSDT 0x00000000BFEE93C0 0001CA (v01 PTLTD  POWERNOW 00000001  LTP 00000001)
[    0.000000] ACPI: SRAT 0x00000000BFEE9600 0000C8 (v01 AMD    HAMMER   00000001 AMD  00000001)
[    0.000000] ACPI: APIC 0x00000000BFEE9300 000072 (v01 SUNW   AWRDACPI 42302E31 AWRD 00000000)
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000000001000-0x0000000000ffffff]
[    0.000000]   DMA32    [mem 0x0000000001000000-0x00000000ffffffff]
[    0.000000]   Normal   [mem 0x0000000100000000-0x000000013fffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000001000-0x0000000000096fff]
[    0.000000]   node   0: [mem 0x0000000000100000-0x00000000bfedffff]
[    0.000000]   node   0: [mem 0x0000000100000000-0x000000013fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000001000-0x000000013fffffff]
[    0.000000] On node 0 totalpages: 1048182
[    0.000000]   DMA zone: 64 pages used for memmap
[    0.000000]   DMA zone: 21 pages reserved
[    0.000000]   DMA zone: 3990 pages, LIFO batch:0
[    0.000000]   DMA32 zone: 12220 pages used for memmap
[    0.000000]   DMA32 zone: 782048 pages, LIFO batch:31
[    0.000000]   Normal zone: 4096 pages used for memmap
[    0.000000]   Normal zone: 262144 pages, LIFO batch:31
[    0.000000] Nvidia board detected. Ignoring ACPI timer override.
[    0.000000] If you got timer trouble try acpi_use_timer_override
[    0.000000] ACPI: PM-Timer IO Port: 0x1008
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
[    0.000000] IOAPIC[0]: apic_id 2, version 17, address 0xfec00000, GSI 0-23
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 14 global_irq 14 high edge)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 15 global_irq 15 high edge)
[    0.000000] ACPI: IRQ9 used by override.
[    0.000000] ACPI: IRQ14 used by override.
[    0.000000] ACPI: IRQ15 used by override.
[    0.000000] Using ACPI (MADT) for SMP configuration information
[    0.000000] smpboot: Allowing 2 CPUs, 0 hotplug CPUs
[    0.000000] PM: Registered nosave memory: [mem 0x00000000-0x00000fff]
[    0.000000] PM: Registered nosave memory: [mem 0x00097000-0x00097fff]
[    0.000000] PM: Registered nosave memory: [mem 0x00098000-0x0009ffff]
[    0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000effff]
[    0.000000] PM: Registered nosave memory: [mem 0x000f0000-0x000fffff]
[    0.000000] PM: Registered nosave memory: [mem 0xbfee0000-0xbfee2fff]
[    0.000000] PM: Registered nosave memory: [mem 0xbfee3000-0xbfeeffff]
[    0.000000] PM: Registered nosave memory: [mem 0xbfef0000-0xbfefffff]
[    0.000000] PM: Registered nosave memory: [mem 0xbff00000-0xdfffffff]
[    0.000000] PM: Registered nosave memory: [mem 0xe0000000-0xefffffff]
[    0.000000] PM: Registered nosave memory: [mem 0xf0000000-0xfebfffff]
[    0.000000] PM: Registered nosave memory: [mem 0xfec00000-0xffffffff]
[    0.000000] e820: [mem 0xbff00000-0xdfffffff] available for PCI devices
[    0.000000] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645519600211568 ns
[    0.000000] setup_percpu: NR_CPUS:4 nr_cpumask_bits:4 nr_cpu_ids:2 nr_node_ids:1
[    0.000000] percpu: Embedded 33 pages/cpu @ffff88013fc00000 s95960 r8192 d31016 u1048576
[    0.000000] pcpu-alloc: s95960 r8192 d31016 u1048576 alloc=1*2097152
[    0.000000] pcpu-alloc: [0] 0 1 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 1031781
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.9.0-rc7-00007-g88abd82 root=/dev/sda1 ro netconsole=1980@192.168.78.12/eth0,1975@192.168.78.2/00:16:3e:67:55:38
[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000000] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes)
[    0.000000] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes)
[    0.000000] AGP: Checking aperture...
[    0.000000] AGP: No AGP bridge found
[    0.000000] AGP: Node 0: aperture [bus addr 0xc0000000-0xcfffffff] (256MB)
[    0.000000] Memory: 4033820K/4192728K available (8679K kernel code, 7159K rwdata, 1288K rodata, 936K init, 424K bss, 158908K reserved, 0K cma-reserved)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000] 	Build-time adjustment of leaf fanout to 64.
[    0.000000] 	RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=64, nr_cpu_ids=2
[    0.000000] NR_IRQS:4352 nr_irqs:440 16
[    0.000000] spurious 8259A interrupt: IRQ7.
[    0.000000] Console: colour dummy device 80x25
[    0.000000] console [tty0] enabled
[    0.000000] tsc: Fast TSC calibration using PIT
[    0.000000] tsc: Detected 1005.253 MHz processor
[    0.000000] tsc: Marking TSC unstable due to TSCs unsynchronized
[    0.004023] Calibrating delay loop (skipped), value calculated using timer frequency.. 2010.50 BogoMIPS (lpj=4021012)
[    0.004055] pid_max: default: 32768 minimum: 301
[    0.004080] ACPI: Core revision 20160831
[    0.016209] ACPI: 2 ACPI AML tables successfully acquired and loaded
[    0.016291] Mount-cache hash table entries: 8192 (order: 4, 65536 bytes)
[    0.016312] Mountpoint-cache hash table entries: 8192 (order: 4, 65536 bytes)
[    0.016849] CPU: Physical Processor ID: 0
[    0.016867] CPU: Processor Core ID: 0
[    0.016883] mce: CPU supports 5 MCE banks
[    0.016915] Last level iTLB entries: 4KB 512, 2MB 8, 4MB 4
[    0.016932] Last level dTLB entries: 4KB 512, 2MB 8, 4MB 4, 1GB 0
[    0.017458] Freeing SMP alternatives memory: 20K (ffffffff823e9000 - ffffffff823ee000)
[    0.020183] smpboot: APIC(0) Converting physical 0 to logical package 0
[    0.020211] smpboot: Max logical packages: 1
[    0.020662] ..TIMER: vector=0x30 apic1=0 pin1=0 apic2=-1 pin2=-1
[    0.064000] smpboot: CPU0: Dual Core AMD Opteron(tm) Processor 175 (family: 0xf, model: 0x23, stepping: 0x2)
[    0.064000] Performance Events: AMD PMU driver.
[    0.064000] ... version:                0
[    0.064000] ... bit width:              48
[    0.064000] ... generic registers:      4
[    0.064000] ... value mask:             0000ffffffffffff
[    0.064000] ... max period:             00007fffffffffff
[    0.064000] ... fixed-purpose events:   0
[    0.064000] ... event mask:             000000000000000f
[    0.064000] NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter.
[    0.064000] x86: Booting SMP configuration:
[    0.064000] .... node  #0, CPUs:      #1
[    0.140070] x86: Booted up 1 node, 2 CPUs
[    0.140070] smpboot: Total of 2 processors activated (4020.94 BogoMIPS)
[    0.141442] devtmpfs: initialized
[    0.141442] PM: Registering ACPI NVS region [mem 0xbfee0000-0xbfee2fff] (12288 bytes)
[    0.141442] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.141442] NET: Registered protocol family 16
[    0.152011] cpuidle: using governor ladder
[    0.164009] cpuidle: using governor menu
[    0.164033] node 0 link 0: io port [5000, ffff]
[    0.164038] TOM: 00000000c0000000 aka 3072M
[    0.164056] node 0 link 0: mmio [a0000, bffff]
[    0.164061] node 0 link 0: mmio [feb00000, fec0ffff]
[    0.164065] node 0 link 0: mmio [c0000000, dfffffff]
[    0.164070] node 0 link 0: mmio [f0000000, fe02ffff]
[    0.164074] node 0 link 0: mmio [e0000000, e05fffff]
[    0.164077] TOM2: 0000000140000000 aka 5120M
[    0.164097] bus: [bus 00-05] on node 0 link 0
[    0.164099] bus: 00 [io  0x0000-0xffff]
[    0.164102] bus: 00 [mem 0x000a0000-0x000bffff]
[    0.164104] bus: 00 [mem 0xfe030000-0xffffffff]
[    0.164106] bus: 00 [mem 0xc0000000-0xefffffff]
[    0.164109] bus: 00 [mem 0xf0000000-0xfe02ffff]
[    0.164111] bus: 00 [mem 0x140000000-0xfcffffffff]
[    0.164170] ACPI: bus type PCI registered
[    0.164287] PCI: Using configuration type 1 for base access
[    0.180075] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[    0.180123] ACPI: Added _OSI(Module Device)
[    0.180123] ACPI: Added _OSI(Processor Device)
[    0.180123] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.180135] ACPI: Added _OSI(Processor Aggregator Device)
[    0.187426] ================================================================================
[    0.187458] UBSAN: Undefined behaviour in drivers/acpi/acpica/dsutils.c:640:16
[    0.187487] index -1 is out of range for type 'acpi_operand_object *[9]'
[    0.187508] CPU: 1 PID: 1 Comm: swapper/0 Not tainted 4.9.0-rc7-00007-g88abd82 #12
[    0.187536] Hardware name: Sun Microsystems Sun Ultra 20 Workstation/2864, BIOS 2.3.0  05/15/2008
[    0.187566]  0000000000000000 ffffffff814517a2 000000000000003c ffffc9000000baf0
[    0.187600]  ffffffffffffffff ffffffff81499229 ffffffff8202db00 ffffffff8149989b
[    0.187632]  0000000000000202 000000000000312d ffffffff81a3c718 ffff88013b018200
[    0.187663] Call Trace:
[    0.187696]  [<ffffffff814517a2>] ? dump_stack+0x47/0x65
[    0.187716]  [<ffffffff81499229>] ? ubsan_epilogue+0x9/0x40
[    0.187735]  [<ffffffff8149989b>] ? __ubsan_handle_out_of_bounds+0x6b/0x80
[    0.187757]  [<ffffffff8150b34d>] ? acpi_ds_create_operand+0x20a/0x2a9
[    0.187778]  [<ffffffff8152c702>] ? acpi_ut_update_ref_count+0x4d/0x325
[    0.187798]  [<ffffffff8150b53b>] ? acpi_ds_create_operands+0x14f/0x1a2
[    0.187820]  [<ffffffff81230377>] ? kmem_cache_free+0x167/0x4c0
[    0.187840]  [<ffffffff8150bbda>] ? acpi_ds_exec_end_op+0x107/0x557
[    0.187862]  [<ffffffff81523fea>] ? acpi_ps_parse_loop+0x709/0x76d
[    0.187880]  [<ffffffff81524ffe>] ? acpi_ps_parse_aml+0x9f/0x2d9
[    0.187899]  [<ffffffff81525b5a>] ? acpi_ps_execute_method+0x1e7/0x21e
[    0.187919]  [<ffffffff8151ddbf>] ? acpi_ns_evaluate+0x223/0x2a7
[    0.187939]  [<ffffffff8151e1f3>] ? acpi_ns_init_one_device+0xe1/0x119
[    0.187959]  [<ffffffff81521a04>] ? acpi_ns_walk_namespace+0x109/0x1ec
[    0.187979]  [<ffffffff8151e112>] ? acpi_ns_init_one_object+0x12d/0x12d
[    0.187999]  [<ffffffff8151e4b7>] ? acpi_ns_initialize_devices+0x198/0x1f6
[    0.188000]  [<ffffffff82349705>] ? acpi_sleep_proc_init+0x22/0x22
[    0.188000]  [<ffffffff8234b4e4>] ? acpi_initialize_objects+0x38/0x4a
[    0.188000]  [<ffffffff823497b6>] ? acpi_init+0xb1/0x30e
[    0.188000]  [<ffffffff815b7c86>] ? __class_create+0x56/0x90
[    0.188000]  [<ffffffff82347e77>] ? video_setup+0x120/0x120
[    0.188000]  [<ffffffff82347eed>] ? fbmem_init+0x76/0xca
[    0.188000]  [<ffffffff81000443>] ? do_one_initcall+0x53/0x1d0
[    0.188000]  [<ffffffff823183ef>] ? kernel_init_freeable+0x240/0x2cd
[    0.188000]  [<ffffffff8186bcf0>] ? rest_init+0x80/0x80
[    0.188000]  [<ffffffff8186bcf6>] ? kernel_init+0x6/0x110
[    0.188000]  [<ffffffff8186bcf0>] ? rest_init+0x80/0x80
[    0.188000]  [<ffffffff818765f2>] ? ret_from_fork+0x22/0x30
[    0.188000] ================================================================================
[    0.191481] ACPI: Interpreter enabled
[    0.191555] ACPI: (supports S0 S1 S3 S4 S5)
[    0.191571] ACPI: Using IOAPIC for interrupt routing
[    0.191651] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[    0.209829] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-05])
[    0.209860] acpi PNP0A08:00: _OSC: OS supports [ASPM ClockPM Segments MSI]
[    0.209889] acpi PNP0A08:00: _OSC failed (AE_NOT_FOUND); disabling ASPM
[    0.209911] acpi PNP0A08:00: fail to add MMCONFIG information, can't access extended PCI configuration space under this bridge.
[    0.211770] PCI host bridge to bus 0000:00
[    0.211793] pci_bus 0000:00: root bus resource [io  0x0000-0x03af window]
[    0.211812] pci_bus 0000:00: root bus resource [io  0x03e0-0x0cf7 window]
[    0.211831] pci_bus 0000:00: root bus resource [io  0x5000-0xffff window]
[    0.211850] pci_bus 0000:00: root bus resource [io  0x03b0-0x03df window]
[    0.211870] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window]
[    0.211899] pci_bus 0000:00: root bus resource [mem 0xc0000000-0xdfffffff window]
[    0.211929] pci_bus 0000:00: root bus resource [mem 0xf0000000-0xfe02ffff window]
[    0.211958] pci_bus 0000:00: root bus resource [mem 0xfeb00000-0xfebfffff window]
[    0.211988] pci_bus 0000:00: root bus resource [bus 00-05]
[    0.212026] pci 0000:00:00.0: [10de:005e] type 00 class 0x058000
[    0.212425] pci 0000:00:01.0: [10de:0050] type 00 class 0x060100
[    0.212469] HPET not enabled in BIOS. You might try hpet=force boot option
[    0.212810] pci 0000:00:01.1: [10de:0052] type 00 class 0x0c0500
[    0.212825] pci 0000:00:01.1: reg 0x10: [io  0xfc00-0xfc1f]
[    0.212846] pci 0000:00:01.1: reg 0x20: [io  0x1c00-0x1c3f]
[    0.212855] pci 0000:00:01.1: reg 0x24: [io  0x1c40-0x1c7f]
[    0.212889] pci 0000:00:01.1: PME# supported from D3hot D3cold
[    0.213232] pci 0000:00:02.0: [10de:005a] type 00 class 0x0c0310
[    0.213246] pci 0000:00:02.0: reg 0x10: [mem 0xfe02f000-0xfe02ffff]
[    0.213299] pci 0000:00:02.0: supports D1 D2
[    0.213303] pci 0000:00:02.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.213550] pci 0000:00:02.0: System wakeup disabled by ACPI
[    0.213676] pci 0000:00:02.1: [10de:005b] type 00 class 0x0c0320
[    0.213691] pci 0000:00:02.1: reg 0x10: [mem 0xfeb00000-0xfeb000ff]
[    0.213750] pci 0000:00:02.1: supports D1 D2
[    0.213753] pci 0000:00:02.1: PME# supported from D0 D1 D2 D3hot D3cold
[    0.214029] pci 0000:00:02.1: System wakeup disabled by ACPI
[    0.214160] pci 0000:00:04.0: [10de:0059] type 00 class 0x040100
[    0.214174] pci 0000:00:04.0: reg 0x10: [io  0xf000-0xf0ff]
[    0.214182] pci 0000:00:04.0: reg 0x14: [io  0xec00-0xecff]
[    0.214191] pci 0000:00:04.0: reg 0x18: [mem 0xfe02d000-0xfe02dfff]
[    0.214236] pci 0000:00:04.0: supports D1 D2
[    0.214555] pci 0000:00:06.0: [10de:0053] type 00 class 0x01018a
[    0.214585] pci 0000:00:06.0: reg 0x20: [io  0xe800-0xe80f]
[    0.214599] pci 0000:00:06.0: legacy IDE quirk: reg 0x10: [io  0x01f0-0x01f7]
[    0.214620] pci 0000:00:06.0: legacy IDE quirk: reg 0x14: [io  0x03f6]
[    0.214639] pci 0000:00:06.0: legacy IDE quirk: reg 0x18: [io  0x0170-0x0177]
[    0.214658] pci 0000:00:06.0: legacy IDE quirk: reg 0x1c: [io  0x0376]
[    0.215014] pci 0000:00:07.0: [10de:0054] type 00 class 0x010185
[    0.215028] pci 0000:00:07.0: reg 0x10: [io  0x09f0-0x09f7]
[    0.215036] pci 0000:00:07.0: reg 0x14: [io  0x0bf0-0x0bf3]
[    0.215044] pci 0000:00:07.0: reg 0x18: [io  0x0970-0x0977]
[    0.215052] pci 0000:00:07.0: reg 0x1c: [io  0x0b70-0x0b73]
[    0.215060] pci 0000:00:07.0: reg 0x20: [io  0xd400-0xd40f]
[    0.215069] pci 0000:00:07.0: reg 0x24: [mem 0xfe02c000-0xfe02cfff]
[    0.215415] pci 0000:00:08.0: [10de:0055] type 00 class 0x010185
[    0.215429] pci 0000:00:08.0: reg 0x10: [io  0x09e0-0x09e7]
[    0.215437] pci 0000:00:08.0: reg 0x14: [io  0x0be0-0x0be3]
[    0.215445] pci 0000:00:08.0: reg 0x18: [io  0x0960-0x0967]
[    0.215453] pci 0000:00:08.0: reg 0x1c: [io  0x0b60-0x0b63]
[    0.215461] pci 0000:00:08.0: reg 0x20: [io  0xc000-0xc00f]
[    0.215470] pci 0000:00:08.0: reg 0x24: [mem 0xfe02b000-0xfe02bfff]
[    0.215814] pci 0000:00:09.0: [10de:005c] type 01 class 0x060401
[    0.216099] pci 0000:00:09.0: System wakeup disabled by ACPI
[    0.216224] pci 0000:00:0a.0: [10de:0057] type 00 class 0x068000
[    0.216238] pci 0000:00:0a.0: reg 0x10: [mem 0xfe02a000-0xfe02afff]
[    0.216246] pci 0000:00:0a.0: reg 0x14: [io  0xbc00-0xbc07]
[    0.216296] pci 0000:00:0a.0: supports D1 D2
[    0.216300] pci 0000:00:0a.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.216543] pci 0000:00:0a.0: System wakeup disabled by ACPI
[    0.216670] pci 0000:00:0b.0: [10de:005d] type 01 class 0x060400
[    0.216725] pci 0000:00:0b.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.216969] pci 0000:00:0b.0: System wakeup disabled by ACPI
[    0.217099] pci 0000:00:0c.0: [10de:005d] type 01 class 0x060400
[    0.217152] pci 0000:00:0c.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.217396] pci 0000:00:0c.0: System wakeup disabled by ACPI
[    0.217523] pci 0000:00:0d.0: [10de:005d] type 01 class 0x060400
[    0.217576] pci 0000:00:0d.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.217825] pci 0000:00:0d.0: System wakeup disabled by ACPI
[    0.217951] pci 0000:00:0e.0: [10de:005d] type 01 class 0x060400
[    0.218003] pci 0000:00:0e.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.218247] pci 0000:00:0e.0: System wakeup disabled by ACPI
[    0.218381] pci 0000:00:18.0: [1022:1100] type 00 class 0x060000
[    0.218733] pci 0000:00:18.1: [1022:1101] type 00 class 0x060000
[    0.219079] pci 0000:00:18.2: [1022:1102] type 00 class 0x060000
[    0.219423] pci 0000:00:18.3: [1022:1103] type 00 class 0x060000
[    0.219829] pci 0000:01:06.0: [1106:3044] type 00 class 0x0c0010
[    0.219847] pci 0000:01:06.0: reg 0x10: [mem 0xfcffe000-0xfcffe7ff]
[    0.219858] pci 0000:01:06.0: reg 0x14: [io  0xa800-0xa87f]
[    0.219928] pci 0000:01:06.0: supports D2
[    0.219932] pci 0000:01:06.0: PME# supported from D2 D3hot D3cold
[    0.220055] pci 0000:01:07.0: [104b:8130] type 00 class 0x010000
[    0.220070] pci 0000:01:07.0: reg 0x10: [io  0xa400-0xa4ff]
[    0.220081] pci 0000:01:07.0: reg 0x14: [mem 0xfcffd000-0xfcffdfff]
[    0.220117] pci 0000:01:07.0: reg 0x30: [mem 0x00000000-0x00007fff pref]
[    0.220230] pci 0000:01:09.0: [1101:9400] type 00 class 0x010000
[    0.220245] pci 0000:01:09.0: reg 0x10: [io  0xa000-0xa0ff]
[    0.220256] pci 0000:01:09.0: reg 0x14: [mem 0xfcffc000-0xfcffcfff]
[    0.220291] pci 0000:01:09.0: reg 0x30: [mem 0x00000000-0x00007fff pref]
[    0.220402] pci 0000:01:0a.0: [1407:8000] type 00 class 0x070101
[    0.220417] pci 0000:01:0a.0: reg 0x10: [io  0x9c00-0x9c07]
[    0.220580] pci 0000:00:09.0: PCI bridge to [bus 01] (subtractive decode)
[    0.220602] pci 0000:00:09.0:   bridge window [io  0x9000-0xafff]
[    0.220608] pci 0000:00:09.0:   bridge window [mem 0xfb000000-0xfcffffff]
[    0.220613] pci 0000:00:09.0:   bridge window [mem 0xfdf00000-0xfdffffff pref]
[    0.220618] pci 0000:00:09.0:   bridge window [io  0x0000-0x03af window] (subtractive decode)
[    0.220622] pci 0000:00:09.0:   bridge window [io  0x03e0-0x0cf7 window] (subtractive decode)
[    0.220626] pci 0000:00:09.0:   bridge window [io  0x5000-0xffff window] (subtractive decode)
[    0.220631] pci 0000:00:09.0:   bridge window [io  0x03b0-0x03df window] (subtractive decode)
[    0.220635] pci 0000:00:09.0:   bridge window [mem 0x000a0000-0x000bffff window] (subtractive decode)
[    0.220640] pci 0000:00:09.0:   bridge window [mem 0xc0000000-0xdfffffff window] (subtractive decode)
[    0.220644] pci 0000:00:09.0:   bridge window [mem 0xf0000000-0xfe02ffff window] (subtractive decode)
[    0.220648] pci 0000:00:09.0:   bridge window [mem 0xfeb00000-0xfebfffff window] (subtractive decode)
[    0.220719] pci 0000:00:0b.0: PCI bridge to [bus 02]
[    0.220741] pci 0000:00:0b.0:   bridge window [io  0x8000-0x8fff]
[    0.220746] pci 0000:00:0b.0:   bridge window [mem 0xfde00000-0xfdefffff]
[    0.220753] pci 0000:00:0b.0:   bridge window [mem 0xfdd00000-0xfddfffff 64bit pref]
[    0.220818] pci 0000:00:0c.0: PCI bridge to [bus 03]
[    0.220839] pci 0000:00:0c.0:   bridge window [io  0x7000-0x7fff]
[    0.220844] pci 0000:00:0c.0:   bridge window [mem 0xfdc00000-0xfdcfffff]
[    0.220850] pci 0000:00:0c.0:   bridge window [mem 0xfdb00000-0xfdbfffff 64bit pref]
[    0.220918] pci 0000:00:0d.0: PCI bridge to [bus 04]
[    0.220939] pci 0000:00:0d.0:   bridge window [io  0x6000-0x6fff]
[    0.220944] pci 0000:00:0d.0:   bridge window [mem 0xfda00000-0xfdafffff]
[    0.220951] pci 0000:00:0d.0:   bridge window [mem 0xfd900000-0xfd9fffff 64bit pref]
[    0.221027] pci 0000:05:00.0: [10de:01d3] type 00 class 0x030000
[    0.221040] pci 0000:05:00.0: reg 0x10: [mem 0xf8000000-0xf8ffffff]
[    0.221053] pci 0000:05:00.0: reg 0x14: [mem 0xd0000000-0xdfffffff 64bit pref]
[    0.221067] pci 0000:05:00.0: reg 0x1c: [mem 0xf9000000-0xf9ffffff 64bit]
[    0.221082] pci 0000:05:00.0: reg 0x30: [mem 0x00000000-0x0001ffff pref]
[    0.221212] pci 0000:05:00.0: disabling ASPM on pre-1.1 PCIe device.  You can enable it with 'pcie_aspm=force'
[    0.221251] pci 0000:00:0e.0: PCI bridge to [bus 05]
[    0.221271] pci 0000:00:0e.0:   bridge window [io  0x5000-0x5fff]
[    0.221276] pci 0000:00:0e.0:   bridge window [mem 0xf8000000-0xfaffffff]
[    0.221282] pci 0000:00:0e.0:   bridge window [mem 0xd0000000-0xdfffffff 64bit pref]
[    0.221302] pci_bus 0000:00: on NUMA node 0
[    0.221641] ACPI: PCI Interrupt Link [LNK1] (IRQs 3 5 7 9 10 *11 12 14 15)
[    0.221818] ACPI: PCI Interrupt Link [LNK2] (IRQs 3 *5 7 9 10 11 12 14 15)
[    0.221992] ACPI: PCI Interrupt Link [LNK3] (IRQs 3 5 7 9 *10 11 12 14 15)
[    0.222165] ACPI: PCI Interrupt Link [LNK4] (IRQs *3 5 7 9 10 11 12 14 15)
[    0.222337] ACPI: PCI Interrupt Link [LNK5] (IRQs 3 5 7 9 10 11 12 14 15) *0, disabled.
[    0.222523] ACPI: PCI Interrupt Link [LUBA] (IRQs *3 5 7 9 10 11 12 14 15)
[    0.222703] ACPI: PCI Interrupt Link [LUBB] (IRQs 3 5 7 9 10 11 12 14 15) *0, disabled.
[    0.222889] ACPI: PCI Interrupt Link [LMAC] (IRQs 3 5 7 9 *10 11 12 14 15)
[    0.223068] ACPI: PCI Interrupt Link [LACI] (IRQs 3 5 7 9 10 *11 12 14 15)
[    0.223244] ACPI: PCI Interrupt Link [LMCI] (IRQs 3 5 7 9 10 11 12 14 15) *0, disabled.
[    0.223430] ACPI: PCI Interrupt Link [LSMB] (IRQs 3 5 7 9 10 *11 12 14 15)
[    0.223609] ACPI: PCI Interrupt Link [LUB2] (IRQs 3 5 *7 9 10 11 12 14 15)
[    0.223781] ACPI: PCI Interrupt Link [LIDE] (IRQs 3 5 7 9 10 11 12 14 15) *0, disabled.
[    0.223980] ACPI: PCI Interrupt Link [LSID] (IRQs 3 *5 7 9 10 11 12 14 15)
[    0.224172] ACPI: PCI Interrupt Link [LFID] (IRQs 3 5 *7 9 10 11 12 14 15)
[    0.224357] ACPI: PCI Interrupt Link [LPCA] (IRQs 3 5 7 9 10 11 12 14 15) *0, disabled.
[    0.224595] ACPI: PCI Interrupt Link [APC1] (IRQs 16) *0, disabled.
[    0.224813] ACPI: PCI Interrupt Link [APC2] (IRQs 17) *0, disabled.
[    0.225030] ACPI: PCI Interrupt Link [APC3] (IRQs 18) *0, disabled.
[    0.225247] ACPI: PCI Interrupt Link [APC4] (IRQs 19) *0, disabled.
[    0.225391] ACPI: PCI Interrupt Link [APC5] (IRQs *16), disabled.
[    0.225619] ACPI: PCI Interrupt Link [APCF] (IRQs 20 21 22 23) *0, disabled.
[    0.225852] ACPI: PCI Interrupt Link [APCG] (IRQs 20 21 22 23) *0, disabled.
[    0.226084] ACPI: PCI Interrupt Link [APCH] (IRQs 20 21 22 23) *0, disabled.
[    0.226316] ACPI: PCI Interrupt Link [APCJ] (IRQs 20 21 22 23) *0, disabled.
[    0.226548] ACPI: PCI Interrupt Link [APCK] (IRQs 20 21 22 23) *0, disabled.
[    0.226779] ACPI: PCI Interrupt Link [APCS] (IRQs 20 21 22 23) *0, disabled.
[    0.227011] ACPI: PCI Interrupt Link [APCL] (IRQs 20 21 22 23) *0, disabled.
[    0.227243] ACPI: PCI Interrupt Link [APCZ] (IRQs 20 21 22 23) *0, disabled.
[    0.227488] ACPI: PCI Interrupt Link [APSI] (IRQs 20 21 22 23) *0, disabled.
[    0.227733] ACPI: PCI Interrupt Link [APSJ] (IRQs 20 21 22 23) *0, disabled.
[    0.227977] ACPI: PCI Interrupt Link [APCP] (IRQs 20 21 22 23) *0, disabled.
[    0.229491] vgaarb: setting as boot device: PCI:0000:05:00.0
[    0.229491] vgaarb: device added: PCI:0000:05:00.0,decodes=io+mem,owns=io+mem,locks=none
[    0.229491] vgaarb: loaded
[    0.229491] vgaarb: bridge control possible 0000:05:00.0
[    0.229491] SCSI subsystem initialized
[    0.229491] libata version 3.00 loaded.
[    0.229491] PCI: Using ACPI for IRQ routing
[    0.229491] PCI: pci_cache_line_size set to 64 bytes
[    0.229491] pci 0000:00:01.1: can't claim BAR 4 [io  0x1c00-0x1c3f]: no compatible bridge window
[    0.229491] pci 0000:00:01.1: can't claim BAR 5 [io  0x1c40-0x1c7f]: no compatible bridge window
[    0.229491] e820: reserve RAM buffer [mem 0x00097800-0x0009ffff]
[    0.229491] e820: reserve RAM buffer [mem 0xbfee0000-0xbfffffff]
[    0.229491] clocksource: Switched to clocksource refined-jiffies
[    0.229491] pnp: PnP ACPI init
[    0.229491] system 00:00: [io  0x1000-0x107f] has been reserved
[    0.229491] system 00:00: [io  0x1080-0x10ff] has been reserved
[    0.229491] system 00:00: [io  0x1400-0x147f] has been reserved
[    0.229491] system 00:00: [io  0x1480-0x14ff] has been reserved
[    0.229491] system 00:00: [io  0x1800-0x187f] has been reserved
[    0.229491] system 00:00: [io  0x1880-0x18ff] has been reserved
[    0.229491] system 00:00: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.233073] system 00:01: [io  0x04d0-0x04d1] has been reserved
[    0.233095] system 00:01: [io  0x0800-0x087f] has been reserved
[    0.233114] system 00:01: [io  0x0ca0-0x0caf] has been reserved
[    0.233133] system 00:01: [io  0x0800-0x087f] has been reserved
[    0.233155] system 00:01: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.233241] pnp 00:02: Plug and Play ACPI device, IDs PNP0b00 (active)
[    0.234182] system 00:03: [mem 0xe0000000-0xefffffff] has been reserved
[    0.234206] system 00:03: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.234654] system 00:04: [mem 0x000da000-0x000dbfff] has been reserved
[    0.234677] system 00:04: [mem 0x000f0000-0x000f7fff] could not be reserved
[    0.234697] system 00:04: [mem 0x000f8000-0x000fbfff] could not be reserved
[    0.234717] system 00:04: [mem 0x000fc000-0x000fffff] could not be reserved
[    0.234736] system 00:04: [mem 0xbfee0000-0xbfefffff] could not be reserved
[    0.234756] system 00:04: [mem 0xffff0000-0xffffffff] has been reserved
[    0.234776] system 00:04: [mem 0x00000000-0x0009ffff] could not be reserved
[    0.234796] system 00:04: [mem 0x00100000-0xbfedffff] could not be reserved
[    0.234816] system 00:04: [mem 0xfec00000-0xfec00fff] could not be reserved
[    0.234836] system 00:04: [mem 0xfee00000-0xfeefffff] has been reserved
[    0.234855] system 00:04: [mem 0xfefff000-0xfeffffff] has been reserved
[    0.234875] system 00:04: [mem 0xfff80000-0xfff80fff] has been reserved
[    0.234894] system 00:04: [mem 0xfff90000-0xfffbffff] has been reserved
[    0.234914] system 00:04: [mem 0xfffed000-0xfffeffff] has been reserved
[    0.234936] system 00:04: Plug and Play ACPI device, IDs PNP0c01 (active)
[    0.234959] pnp: PnP ACPI: found 5 devices
[    0.244022] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
[    0.244087] clocksource: Switched to clocksource acpi_pm
[    0.244151] pci 0000:00:01.1: BAR 4: assigned [io  0x0400-0x043f]
[    0.244175] pci 0000:00:01.1: BAR 5: assigned [io  0x0440-0x047f]
[    0.244203] pci 0000:01:07.0: BAR 6: assigned [mem 0xfdf00000-0xfdf07fff pref]
[    0.244234] pci 0000:01:09.0: BAR 6: assigned [mem 0xfdf08000-0xfdf0ffff pref]
[    0.244266] pci 0000:00:09.0: PCI bridge to [bus 01]
[    0.244285] pci 0000:00:09.0:   bridge window [io  0x9000-0xafff]
[    0.244305] pci 0000:00:09.0:   bridge window [mem 0xfb000000-0xfcffffff]
[    0.244326] pci 0000:00:09.0:   bridge window [mem 0xfdf00000-0xfdffffff pref]
[    0.244357] pci 0000:00:0b.0: PCI bridge to [bus 02]
[    0.244376] pci 0000:00:0b.0:   bridge window [io  0x8000-0x8fff]
[    0.244396] pci 0000:00:0b.0:   bridge window [mem 0xfde00000-0xfdefffff]
[    0.244416] pci 0000:00:0b.0:   bridge window [mem 0xfdd00000-0xfddfffff 64bit pref]
[    0.244447] pci 0000:00:0c.0: PCI bridge to [bus 03]
[    0.244465] pci 0000:00:0c.0:   bridge window [io  0x7000-0x7fff]
[    0.244486] pci 0000:00:0c.0:   bridge window [mem 0xfdc00000-0xfdcfffff]
[    0.244506] pci 0000:00:0c.0:   bridge window [mem 0xfdb00000-0xfdbfffff 64bit pref]
[    0.244537] pci 0000:00:0d.0: PCI bridge to [bus 04]
[    0.244555] pci 0000:00:0d.0:   bridge window [io  0x6000-0x6fff]
[    0.244575] pci 0000:00:0d.0:   bridge window [mem 0xfda00000-0xfdafffff]
[    0.244595] pci 0000:00:0d.0:   bridge window [mem 0xfd900000-0xfd9fffff 64bit pref]
[    0.244630] pci 0000:05:00.0: BAR 6: assigned [mem 0xfa000000-0xfa01ffff pref]
[    0.244660] pci 0000:00:0e.0: PCI bridge to [bus 05]
[    0.244678] pci 0000:00:0e.0:   bridge window [io  0x5000-0x5fff]
[    0.244698] pci 0000:00:0e.0:   bridge window [mem 0xf8000000-0xfaffffff]
[    0.244718] pci 0000:00:0e.0:   bridge window [mem 0xd0000000-0xdfffffff 64bit pref]
[    0.244752] pci_bus 0000:00: resource 4 [io  0x0000-0x03af window]
[    0.244756] pci_bus 0000:00: resource 5 [io  0x03e0-0x0cf7 window]
[    0.244760] pci_bus 0000:00: resource 6 [io  0x5000-0xffff window]
[    0.244764] pci_bus 0000:00: resource 7 [io  0x03b0-0x03df window]
[    0.244768] pci_bus 0000:00: resource 8 [mem 0x000a0000-0x000bffff window]
[    0.244773] pci_bus 0000:00: resource 9 [mem 0xc0000000-0xdfffffff window]
[    0.244777] pci_bus 0000:00: resource 10 [mem 0xf0000000-0xfe02ffff window]
[    0.244781] pci_bus 0000:00: resource 11 [mem 0xfeb00000-0xfebfffff window]
[    0.244786] pci_bus 0000:01: resource 0 [io  0x9000-0xafff]
[    0.244790] pci_bus 0000:01: resource 1 [mem 0xfb000000-0xfcffffff]
[    0.244794] pci_bus 0000:01: resource 2 [mem 0xfdf00000-0xfdffffff pref]
[    0.244798] pci_bus 0000:01: resource 4 [io  0x0000-0x03af window]
[    0.244802] pci_bus 0000:01: resource 5 [io  0x03e0-0x0cf7 window]
[    0.244806] pci_bus 0000:01: resource 6 [io  0x5000-0xffff window]
[    0.244810] pci_bus 0000:01: resource 7 [io  0x03b0-0x03df window]
[    0.244815] pci_bus 0000:01: resource 8 [mem 0x000a0000-0x000bffff window]
[    0.244819] pci_bus 0000:01: resource 9 [mem 0xc0000000-0xdfffffff window]
[    0.244823] pci_bus 0000:01: resource 10 [mem 0xf0000000-0xfe02ffff window]
[    0.244827] pci_bus 0000:01: resource 11 [mem 0xfeb00000-0xfebfffff window]
[    0.244832] pci_bus 0000:02: resource 0 [io  0x8000-0x8fff]
[    0.244836] pci_bus 0000:02: resource 1 [mem 0xfde00000-0xfdefffff]
[    0.244840] pci_bus 0000:02: resource 2 [mem 0xfdd00000-0xfddfffff 64bit pref]
[    0.244845] pci_bus 0000:03: resource 0 [io  0x7000-0x7fff]
[    0.244849] pci_bus 0000:03: resource 1 [mem 0xfdc00000-0xfdcfffff]
[    0.244853] pci_bus 0000:03: resource 2 [mem 0xfdb00000-0xfdbfffff 64bit pref]
[    0.244857] pci_bus 0000:04: resource 0 [io  0x6000-0x6fff]
[    0.244861] pci_bus 0000:04: resource 1 [mem 0xfda00000-0xfdafffff]
[    0.244866] pci_bus 0000:04: resource 2 [mem 0xfd900000-0xfd9fffff 64bit pref]
[    0.244870] pci_bus 0000:05: resource 0 [io  0x5000-0x5fff]
[    0.244874] pci_bus 0000:05: resource 1 [mem 0xf8000000-0xfaffffff]
[    0.244878] pci_bus 0000:05: resource 2 [mem 0xd0000000-0xdfffffff 64bit pref]
[    0.245097] NET: Registered protocol family 2
[    0.245476] TCP established hash table entries: 32768 (order: 6, 262144 bytes)
[    0.245771] TCP bind hash table entries: 32768 (order: 7, 524288 bytes)
[    0.246246] TCP: Hash tables configured (established 32768 bind 32768)
[    0.246378] UDP hash table entries: 2048 (order: 4, 65536 bytes)
[    0.246459] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes)
[    0.246651] NET: Registered protocol family 1
[    0.247377] ACPI: PCI Interrupt Link [APCF] enabled at IRQ 23
[    0.324819] ACPI: PCI Interrupt Link [APCL] enabled at IRQ 22
[    0.325181] pci 0000:00:00.0: Found enabled HT MSI Mapping
[    0.325206] pci 0000:00:0b.0: Found disabled HT MSI Mapping
[    0.325230] pci 0000:00:00.0: Found enabled HT MSI Mapping
[    0.325295] pci 0000:00:00.0: Found enabled HT MSI Mapping
[    0.325317] pci 0000:00:0c.0: Found disabled HT MSI Mapping
[    0.325342] pci 0000:00:00.0: Found enabled HT MSI Mapping
[    0.325410] pci 0000:00:00.0: Found enabled HT MSI Mapping
[    0.325432] pci 0000:00:0d.0: Found disabled HT MSI Mapping
[    0.325457] pci 0000:00:00.0: Found enabled HT MSI Mapping
[    0.325529] pci 0000:00:00.0: Found enabled HT MSI Mapping
[    0.325551] pci 0000:00:0e.0: Found disabled HT MSI Mapping
[    0.325576] pci 0000:00:00.0: Found enabled HT MSI Mapping
[    0.325641] pci 0000:05:00.0: Video device with shadowed ROM at [mem 0x000c0000-0x000dffff]
[    0.325670] PCI: CLS 32 bytes, default 64
[    0.326072] PCI-DMA: Disabling AGP.
[    0.326574] PCI-DMA: aperture base @ c0000000 size 262144 KB
[    0.326618] PCI-DMA: using GART IOMMU.
[    0.326639] PCI-DMA: Reserving 256MB of IOMMU area in the AGP aperture
[    0.336981] simple-framebuffer simple-framebuffer.0: framebuffer at 0xd0000000, 0x500000 bytes, mapped to 0xffffc90000800000
[    0.337043] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0xe7d795ee82, max_idle_ns: 440795205334 ns
[    0.337090] simple-framebuffer simple-framebuffer.0: format=a8r8g8b8, mode=1280x1024x32, linelength=5120
[    0.355345] Console: switching to colour frame buffer device 160x64
[    0.373276] simple-framebuffer simple-framebuffer.0: fb0: simplefb registered!
[    0.373883] futex hash table entries: 512 (order: 3, 32768 bytes)
[    0.374517] workingset: timestamp_bits=62 max_order=20 bucket_order=0
[    0.380478] cryptomgr_test (33) used greatest stack depth: 15296 bytes left
[    0.380740] cryptomgr_test (35) used greatest stack depth: 14904 bytes left
[    0.382785] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[    0.382961] io scheduler noop registered
[    0.383048] io scheduler deadline registered
[    0.383228] io scheduler cfq registered (default)
[    0.383812] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    0.385007] Non-volatile memory driver v1.3
[    0.385102] Linux agpgart interface v0.103
[    0.385688] sata_nv 0000:00:07.0: version 3.5
[    0.386442] ACPI: PCI Interrupt Link [APSI] enabled at IRQ 21
[    0.387483] scsi host0: sata_nv
[    0.387855] scsi host1: sata_nv
[    0.388088] ata1: SATA max UDMA/133 cmd 0x9f0 ctl 0xbf0 bmdma 0xd400 irq 21
[    0.388240] ata2: SATA max UDMA/133 cmd 0x970 ctl 0xb70 bmdma 0xd408 irq 21
[    0.389047] ACPI: PCI Interrupt Link [APSJ] enabled at IRQ 20
[    0.390099] scsi host2: sata_nv
[    0.390442] scsi host3: sata_nv
[    0.390634] ata3: SATA max UDMA/133 cmd 0x9e0 ctl 0xbe0 bmdma 0xc000 irq 20
[    0.390785] ata4: SATA max UDMA/133 cmd 0x960 ctl 0xb60 bmdma 0xc008 irq 20
[    0.391017] forcedeth: Reverse Engineered nForce ethernet driver. Version 0.64.
[    0.391781] ACPI: PCI Interrupt Link [APCH] enabled at IRQ 23
[    0.702598] ata3: SATA link down (SStatus 0 SControl 300)
[    0.702606] ata1: SATA link down (SStatus 0 SControl 300)
[    0.939074] forcedeth 0000:00:0a.0: ifname eth0, PHY OUI 0x5043 @ 1, addr 00:e0:81:5b:71:c3
[    0.939259] forcedeth 0000:00:0a.0: highdma csum gbit lnktim desc-v3
[    0.939526] i8042: PNP: No PS/2 controller found. Probing ports directly.
[    0.942145] serio: i8042 KBD port at 0x60,0x64 irq 1
[    0.942265] serio: i8042 AUX port at 0x60,0x64 irq 12
[    0.942744] mousedev: PS/2 mouse device common for all mice
[    0.942948] rtc_cmos 00:02: RTC can wake from S4
[    0.943301] rtc_cmos 00:02: rtc core: registered rtc_cmos as rtc0
[    0.943470] rtc_cmos 00:02: alarms up to one year, y3k, 242 bytes nvram
[    0.944140] NET: Registered protocol family 10
[    0.944929] mip6: Mobile IPv6
[    0.945016] NET: Registered protocol family 17
[    0.945128] Key type dns_resolver registered
[    0.950879] microcode: AMD CPU family 0xf not supported
[    0.956696] registered taskstats version 1
[    0.962365] kworker/u4:0 (66) used greatest stack depth: 14608 bytes left
[    0.968366] cryptomgr_probe (68) used greatest stack depth: 14584 bytes left
[    0.974230] kworker/u4:0 (70) used greatest stack depth: 13968 bytes left
[    0.974474] Key type encrypted registered
[    0.974946] netpoll: netconsole: local port 1980
[    0.974949] netpoll: netconsole: local IPv4 address 192.168.78.12
[    0.974950] netpoll: netconsole: interface 'eth0'
[    0.974952] netpoll: netconsole: remote port 1975
[    0.974954] netpoll: netconsole: remote IPv4 address 192.168.78.2
[    0.974956] netpoll: netconsole: remote ethernet address 00:16:3e:67:55:38
[    0.974959] netpoll: netconsole: device eth0 not up yet, forcing it
[    0.975626] forcedeth 0000:00:0a.0 eth0: no link during initialization
[    0.975896] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[    1.172049] ata2: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
[    1.180358] ata2.00: LPM support broken, forcing max_power
[    1.186475] ata2.00: ATA-6: WDC WD800JD-00HKA0, 13.03G13, max UDMA/133
[    1.192449] ata2.00: 156301488 sectors, multi 16: LBA 
[    1.202832] ata2.00: LPM support broken, forcing max_power
[    1.208767] ata2.00: configured for UDMA/133
[    1.214743] scsi 1:0:0:0: Direct-Access     ATA      WDC WD800JD-00HK 3G13 PQ: 0 ANSI: 5
[    1.260369] sd 1:0:0:0: [sda] 156301488 512-byte logical blocks: (80.0 GB/74.5 GiB)
[    1.266237] sd 1:0:0:0: [sda] Write Protect is off
[    1.271932] sd 1:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    1.271960] sd 1:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    1.318605]  sda: sda1 sda2 < sda5 >
[    1.324873] sd 1:0:0:0: [sda] Attached SCSI disk
[    1.578543] ata4: SATA link down (SStatus 0 SControl 300)
[    2.564013] forcedeth 0000:00:0a.0 eth0: link up
[    2.567399] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[    2.580677] console [netcon0] enabled
[    2.586378] netconsole: network logging started
[    2.592130] rtc_cmos 00:02: setting system clock to 2016-11-29 15:37:19 UTC (1480433839)
[    2.604694] random: fast init done
[    2.615861] EXT4-fs (sda1): couldn't mount as ext3 due to feature incompatibilities
[    2.622035] EXT4-fs (sda1): couldn't mount as ext2 due to feature incompatibilities
[    2.664825] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)
[    2.670776] VFS: Mounted root (ext4 filesystem) readonly on device 8:1.
[    2.752314] devtmpfs: mounted
[    2.761596] Freeing unused kernel memory: 936K (ffffffff822ff000 - ffffffff823e9000)
[    2.767673] Write protecting the kernel read-only data: 12288k
[    2.775781] Freeing unused kernel memory: 1540K (ffff88000187f000 - ffff880001a00000)
[    2.787719] Freeing unused kernel memory: 760K (ffff880001b42000 - ffff880001c00000)
[    2.828056] x86/mm: Checked W+X mappings: passed, no W+X pages found.
[    3.633245] stty (79) used greatest stack depth: 13368 bytes left
[    3.715386] uname (81) used greatest stack depth: 13264 bytes left
[    4.559648] ps (154) used greatest stack depth: 13216 bytes left
[    5.555988] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input2
[    5.563371] ACPI: Power Button [PWRB]
[    5.570440] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input3
[    5.577383] ACPI: Power Button [PWRF]
[    5.699763] i2c i2c-0: nForce2 SMBus adapter at 0x400
[    5.706738] i2c i2c-1: nForce2 SMBus adapter at 0x440
[    5.844911] pata_amd 0000:00:06.0: version 0.4.1
[    5.847265] scsi host4: pata_amd
[    5.854345] scsi host5: pata_amd
[    5.861166] ata5: PATA max UDMA/133 cmd 0x1f0 ctl 0x3f6 bmdma 0xe800 irq 14
[    5.867953] ata6: PATA max UDMA/133 cmd 0x170 ctl 0x376 bmdma 0xe808 irq 15
[    6.034576] ata5.00: ATAPI: LITE-ON DVD SOHD-16P9S, F3S2, max UDMA/33
[    6.041409] ata5: nv_mode_filter: 0x739f&0x739f->0x739f, BIOS=0x7000 (0xc0000000) ACPI=0x701f (60:600:0x13)
[    6.043972] ata5.00: configured for UDMA/33
[    6.051689] scsi 4:0:0:0: CD-ROM            LITE-ON  DVD SOHD-16P9S   F3S2 PQ: 0 ANSI: 5
[    6.201923] ACPI: PCI Interrupt Link [APC3] enabled at IRQ 18
[    6.261402] i91u: PCI Base=0xA000, IRQ=18, BIOS=0xFF000, SCSI ID=7
[    6.268221] i91u: Reset SCSI Bus ... 
[    6.642771] ACPI: PCI Interrupt Link [APC1] enabled at IRQ 16
[    7.721797] scsi: ***** BusLogic SCSI Driver Version 2.1.17 of 12 September 2013 *****
[    7.728867] scsi: Copyright 1995-1998 by Leonard N. Zubkoff <lnz@dandelion.com>
[    7.736346] scsi7: Configuring BusLogic Model BT-950 PCI Wide Ultra SCSI Host Adapter
[    7.743401] scsi7:   Firmware Version: 5.02, I/O Address: 0xA400, IRQ Channel: 16/Level
[    7.756655] scsi7:   PCI Bus: 1, Device: 7, Address: 
[    7.756794] 0xFCFFD000, 
[    7.766570] Host Adapter SCSI ID: 7
[    7.773806] scsi7:   Parity Checking: Enabled, Extended Translation: Enabled
[    7.781109] scsi7:   Synchronous Negotiation: Fast, Wide Negotiation: Enabled
[    7.788417] scsi7:   Disconnect/Reconnect: Enabled, Tagged Queuing: Enabled
[    7.798344] scsi7:   Driver Queue Depth: 255, Scatter/Gather Limit: 128 segments
[    7.805678] scsi7:   Tagged Queue Depth: 
[    7.805773] Automatic
[    7.812989] , Untagged Queue Depth: 3
[    7.820661] scsi7:   SCSI Bus Termination: Both Enabled
[    7.820784] , SCAM: Disabled

[    7.835663] scsi7: *** BusLogic BT-950 Initialized Successfully ***
[    9.827561] scsi host7: BusLogic BT-950
[    9.834953] floppy0: no floppy controllers found
[    9.834970] work still pending
[   10.040064] sd 1:0:0:0: Attached scsi generic sg0 type 0
[   10.050192] scsi 4:0:0:0: Attached scsi generic sg1 type 5
[   10.356596] ata_id (267) used greatest stack depth: 12600 bytes left
[   10.586702] ACPI: bus type USB registered
[   10.597053] usbcore: registered new interface driver usbfs
[   10.607918] usbcore: registered new interface driver hub
[   10.616986] usbcore: registered new device driver usb
[   10.784277] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[   10.987371] ehci-pci: EHCI PCI platform driver
[   10.997184] ehci-pci 0000:00:02.1: EHCI Host Controller
[   11.004136] ehci-pci 0000:00:02.1: new USB bus registered, assigned bus number 1
[   11.011031] BUG: sleeping function called from invalid context at kernel/irq/manage.c:110
[   11.011031] in_atomic(): 1, irqs_disabled(): 1, pid: 238, name: systemd-udevd
[   11.011031] CPU: 0 PID: 238 Comm: systemd-udevd Not tainted 4.9.0-rc7-00007-g88abd82 #12
[   11.011031] Hardware name: Sun Microsystems Sun Ultra 20 Workstation/2864, BIOS 2.3.0  05/15/2008
[   11.011031]  0000000000000000 ffffffff814517a2 0000000000000041 ffffc900002c4000
[   11.011031]  ffff88013a4705b8 ffffffff810cacf6 ffff88013a9a4a00 ffffc9000002d000
[   11.011031]  00000000000000df ffffffff81118dfe 0000000000000001 ffffffff811181fe
[   11.011031] Call Trace:
[   11.011031]  [<ffffffff814517a2>] ? dump_stack+0x47/0x65
[   11.011031]  [<ffffffff810cacf6>] ? ___might_sleep+0x106/0x1b0
[   11.011031]  [<ffffffff81118dfe>] ? synchronize_irq+0x2e/0xa0
[   11.011031]  [<ffffffff811181fe>] ? __irq_put_desc_unlock+0x1e/0x80
[   11.011031]  [<ffffffff811191fc>] ? __disable_irq_nosync+0x3c/0x60
[   11.011031]  [<ffffffff8165b33a>] ? nv_do_nic_poll+0x7a/0x5e0
[   11.011031]  [<ffffffff8171115c>] ? netpoll_poll_dev+0xbc/0x290
[   11.011031]  [<ffffffff817119d4>] ? netpoll_send_skb_on_dev+0x1e4/0x3f0
[   11.011031]  [<ffffffff817120b4>] ? netpoll_send_udp+0x404/0x950
[   11.011031]  [<ffffffff814e3910>] ? bit_update_start+0x90/0x90
[   11.011031]  [<ffffffff8164c174>] ? write_msg+0x104/0x1c0
[   11.011031]  [<ffffffff8111448a>] ? call_console_drivers.isra.13.constprop.26+0x9a/0xc0
[   11.011031]  [<ffffffff811153b0>] ? console_unlock+0x350/0x690
[   11.011031]  [<ffffffff81115949>] ? vprintk_emit+0x259/0x570
[   11.011031]  [<ffffffff815b2710>] ? dev_vprintk_emit+0xe0/0x2e0
[   11.011031]  [<ffffffff8122e22c>] ? kmem_cache_alloc+0x11c/0x1b0
[   11.011031]  [<ffffffff815b2949>] ? dev_printk_emit+0x39/0x40
[   11.011031]  [<ffffffff81455128>] ? idr_mark_full+0x78/0xc0
[   11.011031]  [<ffffffff815b2d47>] ? _dev_info+0x57/0x60
[   11.011031]  [<ffffffffa022a8df>] ? usb_add_hcd+0xdf/0xa40 [usbcore]
[   11.011031]  [<ffffffffa0246289>] ? for_each_companion+0x49/0xe0 [usbcore]
[   11.011031]  [<ffffffffa0246772>] ? usb_hcd_pci_probe+0x452/0x720 [usbcore]
[   11.011031]  [<ffffffff814aeb6f>] ? pci_device_probe+0xcf/0x160
[   11.011031]  [<ffffffff815b6622>] ? driver_probe_device+0xf2/0x370
[   11.011031]  [<ffffffff815b6960>] ? __driver_attach+0xc0/0x100
[   11.011031]  [<ffffffff815b68a0>] ? driver_probe_device+0x370/0x370
[   11.011031]  [<ffffffff815b35ec>] ? bus_for_each_dev+0x6c/0xb0
[   11.011031]  [<ffffffff815b4e87>] ? bus_add_driver+0x117/0x2c0
[   11.011031]  [<ffffffff815b7357>] ? driver_register+0x67/0x110
[   11.011031]  [<ffffffffa028f000>] ? 0xffffffffa028f000
[   11.011031]  [<ffffffff81000443>] ? do_one_initcall+0x53/0x1d0
[   11.011031]  [<ffffffff8122e1a2>] ? kmem_cache_alloc+0x92/0x1b0
[   11.011031]  [<ffffffff812052a8>] ? free_vmap_area_noflush+0x68/0x100
[   11.011031]  [<ffffffff8118f35f>] ? do_init_module+0x94/0x275
[   11.011031]  [<ffffffff8115bcaa>] ? load_module+0x23aa/0x31a0
[   11.011031]  [<ffffffff81157c40>] ? m_show+0x200/0x200
[   11.011031]  [<ffffffff8125f792>] ? kernel_read_file_from_fd+0x52/0x90
[   11.011031]  [<ffffffff8115ccb6>] ? SYSC_finit_module+0xd6/0xe0
[   11.011031]  [<ffffffff810029ad>] ? do_syscall_64+0x9d/0x300
[   11.011031]  [<ffffffff8187644a>] ? entry_SYSCALL64_slow_path+0x25/0x25
[   11.221006] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[   11.328542] ehci-pci 0000:00:02.1: debug port 1
[   11.333691] ehci-pci 0000:00:02.1: cache line size of 32 is not supported
[   11.333737] ehci-pci 0000:00:02.1: irq 22, io mem 0xfeb00000
[   11.352042] ehci-pci 0000:00:02.1: USB 2.0 started, EHCI 1.00
[   11.361254] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[   11.366444] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[   11.371609] usb usb1: Product: EHCI Host Controller
[   11.376812] usb usb1: Manufacturer: Linux 4.9.0-rc7-00007-g88abd82 ehci_hcd
[   11.383879] usb usb1: SerialNumber: 0000:00:02.1
[   11.391477] hub 1-0:1.0: USB hub found
[   11.398600] hub 1-0:1.0: 8 ports detected
[   11.405339] ACPI: PCI Interrupt Link [APCJ] enabled at IRQ 22
[   11.461202] ohci-pci: OHCI PCI platform driver
[   11.744051] snd_intel8x0 0000:00:04.0: intel8x0_measure_ac97_clock: measured 58604 usecs (2872 samples)
[   11.756321] snd_intel8x0 0000:00:04.0: clocking to 47014
[   11.771603] ohci-pci 0000:00:02.0: OHCI PCI host controller
[   11.776915] ohci-pci 0000:00:02.0: new USB bus registered, assigned bus number 2
[   11.792090] ohci-pci 0000:00:02.0: irq 23, io mem 0xfe02f000
[   11.858143] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
[   11.863518] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[   11.868669] usb usb2: Product: OHCI PCI host controller
[   11.873727] usb usb2: Manufacturer: Linux 4.9.0-rc7-00007-g88abd82 ohci_hcd
[   11.878847] usb usb2: SerialNumber: 0000:00:02.0
[   11.886470] hub 2-0:1.0: USB hub found
[   11.893377] hub 2-0:1.0: 8 ports detected
[   12.110753] input: PC Speaker as /devices/platform/pcspkr/input/input4
[   12.458415] random: crng init done
[   12.671477] EDAC MC: Ver: 3.0.0
[   12.714967] Error: Driver 'pcspkr' is already registered, aborting...
[   12.751862] MCE: In-kernel MCE decoding enabled.
[   12.859914] EDAC amd64: DRAM ECC enabled.
[   12.867539] EDAC amd64: K8 revE or earlier detected (node 0).
[   12.873458] EDAC MC0: Giving out device to module amd64_edac controller K8: DEV 0000:00:18.2 (INTERRUPT)
[   12.892620] EDAC PCI0: Giving out device to module amd64_edac controller EDAC PCI controller: DEV 0000:00:18.2 (POLLED)
[   12.904039] AMD64 EDAC driver v3.4.0
[   12.908011] BUG: sleeping function called from invalid context at kernel/irq/manage.c:110
[   12.908011] in_atomic(): 1, irqs_disabled(): 1, pid: 241, name: systemd-udevd
[   12.908011] CPU: 0 PID: 241 Comm: systemd-udevd Tainted: G        W       4.9.0-rc7-00007-g88abd82 #12
[   12.908011] Hardware name: Sun Microsystems Sun Ultra 20 Workstation/2864, BIOS 2.3.0  05/15/2008
[   12.908011]  0000000000000000 ffffffff814517a2 0000000000000041 ffffc900002dc000
[   12.908011]  ffff88013a8e1c38 ffffffff810cacf6 ffff88013a9a4a00 ffffc9000002d000
[   12.908011]  0000000000000060 ffffffff81118dfe 0000000000000001 ffffffff811181fe
[   12.908011] Call Trace:
[   12.908011]  [<ffffffff814517a2>] ? dump_stack+0x47/0x65
[   12.908011]  [<ffffffff810cacf6>] ? ___might_sleep+0x106/0x1b0
[   12.908011]  [<ffffffff81118dfe>] ? synchronize_irq+0x2e/0xa0
[   12.908011]  [<ffffffff811181fe>] ? __irq_put_desc_unlock+0x1e/0x80
[   12.908011]  [<ffffffff811191fc>] ? __disable_irq_nosync+0x3c/0x60
[   12.908011]  [<ffffffff8165b33a>] ? nv_do_nic_poll+0x7a/0x5e0
[   12.908011]  [<ffffffff8171115c>] ? netpoll_poll_dev+0xbc/0x290
[   12.908011]  [<ffffffff817119d4>] ? netpoll_send_skb_on_dev+0x1e4/0x3f0
[   12.908011]  [<ffffffff817120b4>] ? netpoll_send_udp+0x404/0x950
[   12.908011]  [<ffffffff814e3910>] ? bit_update_start+0x90/0x90
[   12.908011]  [<ffffffff8164c174>] ? write_msg+0x104/0x1c0
[   12.908011]  [<ffffffff8111448a>] ? call_console_drivers.isra.13.constprop.26+0x9a/0xc0
[   12.908011]  [<ffffffff811153b0>] ? console_unlock+0x350/0x690
[   12.908011]  [<ffffffff81115949>] ? vprintk_emit+0x259/0x570
[   12.908011]  [<ffffffff8118eee5>] ? printk+0x43/0x4b
[   12.908011]  [<ffffffffa03bd990>] ? amd64_edac_init+0x990/0x2000 [amd64_edac_mod]
[   12.908011]  [<ffffffffa03bd000>] ? 0xffffffffa03bd000
[   12.908011]  [<ffffffff81000443>] ? do_one_initcall+0x53/0x1d0
[   12.908011]  [<ffffffff8122e1a2>] ? kmem_cache_alloc+0x92/0x1b0
[   12.908011]  [<ffffffff812052a8>] ? free_vmap_area_noflush+0x68/0x100
[   12.908011]  [<ffffffff8118f35f>] ? do_init_module+0x94/0x275
[   12.908011]  [<ffffffff8115bcaa>] ? load_module+0x23aa/0x31a0
[   12.908011]  [<ffffffff81157c40>] ? m_show+0x200/0x200
[   12.908011]  [<ffffffff8125f792>] ? kernel_read_file_from_fd+0x52/0x90
[   12.908011]  [<ffffffff8115ccb6>] ? SYSC_finit_module+0xd6/0xe0
[   12.908011]  [<ffffffff810029ad>] ? do_syscall_64+0x9d/0x300
[   12.908011]  [<ffffffff8187644a>] ? entry_SYSCALL64_slow_path+0x25/0x25
[   13.195212] powernow_k8: fid 0xe (2200 MHz), vid 0x8
[   13.203737] powernow_k8: fid 0xc (2000 MHz), vid 0xa
[   13.209740] powernow_k8: fid 0xa (1800 MHz), vid 0xc
[   13.215860] powernow_k8: fid 0x2 (1000 MHz), vid 0x12
[   13.221776] powernow_k8: Found 1 Dual Core AMD Opteron(tm) Processor 175 (2 cpu cores) (version 2.20.00)
[   13.352889] [drm] Initialized
[   14.188444] wmi: Mapper loaded
[   16.276059] scsi host6: Initio INI-9X00U/UW SCSI device driver
[   16.284444] ACPI: PCI Interrupt Link [APC2] enabled at IRQ 17
[   16.285031] sr 4:0:0:0: [sr0] scsi3-mmc drive: 4x/48x cd/rw xa/form2 cdda tray
[   16.285034] cdrom: Uniform CD-ROM driver Revision: 3.20
[   16.285236] sr 4:0:0:0: Attached scsi CD-ROM sr0
[   16.298699] PCI parallel port detected: 1407:8000, I/O at 0x9c00(0x0), IRQ 17
[   16.298755] parport0: PC-style at 0x9c00, irq 17 [PCSPP,TRISTATE,EPP]
[   16.472085] firewire_ohci 0000:01:06.0: added OHCI v1.10 device as card 0, 4 IR + 8 IT contexts, quirks 0x11
[   16.903206] checking generic (d0000000 500000) vs hw (d0000000 10000000)
[   16.903211] fb: switching to nouveaufb from simple
[   16.909390] Console: switching to colour dummy device 80x25
[   16.909874] nouveau 0000:05:00.0: NVIDIA G72 (246300b1)
[   16.992267] firewire_core 0000:01:06.0: created device fw0: GUID 00e081000024cf31, S400
[   17.100617] nouveau 0000:05:00.0: bios: version 05.72.22.71.09
[   17.102363] nouveau 0000:05:00.0: fb: 128 MiB DDR2
[   18.404049] [TTM] Zone  kernel: Available graphics memory: 2051514 kiB
[   18.404069] [TTM] Initializing pool allocator
[   18.404084] [TTM] Initializing DMA pool allocator
[   18.404120] nouveau 0000:05:00.0: DRM: VRAM: 125 MiB
[   18.404131] nouveau 0000:05:00.0: DRM: GART: 512 MiB
[   18.404143] nouveau 0000:05:00.0: DRM: TMDS table version 1.1
[   18.404154] nouveau 0000:05:00.0: DRM: TMDS table script pointers not stubbed
[   18.404165] nouveau 0000:05:00.0: DRM: DCB version 3.0
[   18.404176] nouveau 0000:05:00.0: DRM: DCB outp 00: 01010300 00000028
[   18.404188] nouveau 0000:05:00.0: DRM: DCB outp 01: 01010302 00000000
[   18.404199] nouveau 0000:05:00.0: DRM: DCB outp 02: 02001310 00000028
[   18.404210] nouveau 0000:05:00.0: DRM: DCB outp 03: 020223f1 00a0c030
[   18.404221] nouveau 0000:05:00.0: DRM: DCB conn 00: 1030
[   18.404231] nouveau 0000:05:00.0: DRM: DCB conn 01: 0100
[   18.404241] nouveau 0000:05:00.0: DRM: DCB conn 02: 0210
[   18.404251] nouveau 0000:05:00.0: DRM: DCB conn 03: 0211
[   18.406573] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[   18.406586] [drm] Driver supports precise vblank timestamp query.
[   18.409721] nouveau 0000:05:00.0: DRM: MM: using M2MF for buffer copies
[   18.409744] nouveau 0000:05:00.0: DRM: Setting dpms mode 3 on TV encoder (output 3)
[   18.528034] nouveau 0000:05:00.0: No connectors reported connected with modes
[   18.528080] [drm] Cannot find any crtc or sizes - going 1024x768
[   18.528341] nouveau 0000:05:00.0: DRM: allocated 1024x768 fb: 0x9000, bo ffff88013abe6c00
[   18.528470] fbcon: nouveaufb (fb0) is primary device
[   18.648069] Console: switching to colour frame buffer device 128x48
[   18.649688] nouveau 0000:05:00.0: fb0: nouveaufb frame buffer device
[   18.664100] [drm] Initialized nouveau 1.3.1 20120801 for 0000:05:00.0 on minor 0
[   20.472053] systemd-udevd (237) used greatest stack depth: 12280 bytes left
[   21.105087] Adding 3212284k swap on /dev/sda5.  Priority:-1 extents:1 across:3212284k 
[   21.185803] EXT4-fs (sda1): re-mounted. Opts: (null)
[   21.365522] EXT4-fs (sda1): re-mounted. Opts: errors=remount-ro
[   21.762166] loop: module loaded
[   21.908067] i2c i2c-0: Found a DME1737 chip at 0x2e (rev 0x89).
[   21.932115] dme1737 0-002e: Optional features: pwm3=yes, pwm5=no, pwm6=no, fan3=yes, fan4=yes, fan5=no, fan6=no.
[   22.048040] i2c i2c-1: Found a DME1737 chip at 0x2e (rev 0x89).
[   22.072069] dme1737 1-002e: Optional features: pwm3=yes, pwm5=no, pwm6=no, fan3=yes, fan4=yes, fan5=no, fan6=no.
[ 6003.936088] kworker/dying (62) used greatest stack depth: 11952 bytes left


-- 
Meelis Roos (mroos@linux.ee)

^ permalink raw reply

* Re: [PATCH net-next] bpf: add test for the verifier equal logic bug
From: Daniel Borkmann @ 2016-11-29 20:23 UTC (permalink / raw)
  To: Josef Bacik, davem, netdev, ast, jannh, kernel-team
In-Reply-To: <c2ea35d1-302c-671e-f976-9bb7ccf56197@fb.com>

On 11/29/2016 08:50 PM, Josef Bacik wrote:
> On 11/29/2016 02:06 PM, Daniel Borkmann wrote:
>> On 11/29/2016 06:35 PM, Josef Bacik wrote:
>>> This is a test to verify that
>>>
>>> bpf: fix states equal logic for varlen access
>>>
>>> actually fixed the problem.  The problem was if the register we added to our map
>>> register was UNKNOWN in both the false and true branches and the only thing that
>>> changed was the range then we'd incorrectly assume that the true branch was
>>> valid, which it really wasnt.  This tests this case and properly fails without
>>> my fix in place and passes with it in place.
>>>
>>> Signed-off-by: Josef Bacik <jbacik@fb.com>
>>
>> Acked-by: Daniel Borkmann <daniel@iogearbox.net>
>>
>> Thanks a lot for the test case! They are always useful to have ... which
>> just reminds me: it seems we didn't add anything for f23cc643f9ba ("bpf:
>> fix range arithmetic for bpf map access"). ;-)
>
> I was hoping you wouldn't notice ;).  I'll add one in the next couple of days. Thanks,

Awesome, thanks a lot! :-)

^ permalink raw reply

* Re: bpf debug info
From: Daniel Borkmann @ 2016-11-29 20:23 UTC (permalink / raw)
  To: Alexei Starovoitov, Jakub Kicinski
  Cc: netdev, Brenden Blanco, Thomas Graf, Wangnan, He Kuang,
	kernel-team
In-Reply-To: <20161129185116.GA22581@ast-mbp.thefacebook.com>

On 11/29/2016 07:51 PM, Alexei Starovoitov wrote:
> On Tue, Nov 29, 2016 at 03:38:18PM +0000, Jakub Kicinski wrote:
[...]
>>>> So next step is to improve verifier messages to be more human friendly.
>>>> The step after is to introduce BPF_COMMENT pseudo instruction
>>>> that will be ignored by the interpreter yet it will contain the text
>>>> of original source code. Then llvm-objdump step won't be necessary.
>>>> The bpf loader will load both instructions and pieces of C sources.
>>>> Then verifier errors should be even easier to read and humans
>>>> can easily understand the purpose of the program.
>>>
>>> So the BPF_COMMENT pseudo insn will get stripped away from the insn array
>>> after verification step, so we don't need to hold/account for this mem? I
>>> assume in it's ->imm member it will just hold offset into text blob?
>>
>> Associating any form of opaque data with programs always makes me
>> worried about opening a side channel of communication with a specialized
>> user space implementations/compilers.  But I guess if the BPF_COMMENTs
>> are stripped in the verifier as Daniel assumes drivers and JITs will
>> never see it.
>
> yes. the idea that it's a comment. It can contain any text,
> not only C code, but any other language.
> It's definitely going to be stripped before JITs and kernel will
> not make any safety or translation decisions based on such comment.
>
>> Just to clarify, however - is there any reason why pushing the source
>> code into the kernel is necessary?  Or is it just for convenience?
>> Provided the user space loader has access to the debug info it should
>> have no problems matching the verifier output to code lines?
>
> correct. just for convenience. The user space has to keep .o around,
> since it can crash, would have to reload and so on.
> Only for some script that ssh-es into servers and wants to see
> what is being loaded, it might help to dump full asm and these comments
> along with prog_digest that Daniel is working on in parallel.

Which would mean we'd need to keep it around somewhere (prog aux data?)
in post-verification time (so potentially drivers/JITs could see it, too,
just not inside insn stream). Some API glue code could probably blind
this information for the JITing time to stop incentive of playing side
channel games (e.g. core code could encrypt the pointer value and only
core kernel knows how to access that data, no modules, no out-of-tree
code). The other thing I'm wondering is, when we strip this info anyway
from the insn stream to keep it in aux data (so it can later be reconstructed
on a dump), then perhaps that is best done before prog loading time? It
would then allow to keep complexity with stripping that insns out of the
verifier. If semantics are that these comments are acting as a hole/gap
(in a similar sense of what we have with cBPF today), then it can never
become a jmp target and loaders could strip it out already (instead of
teaching DFS, etc about it), and prepare a meta data structure in bpf_attr
for bpf(2), and verifier works based on that one. What makes this problematic
however is when you have rewrites in the kernel (ctx access, constant
blinding, etc), but perhaps they could just adjust the offsets from that
meta data thing as well?

> Alternatively instead of doing BPF_COMMENT we can load the whole .o
> as-is into bpffs as a blob. Later (based on digest) the kernel can
> dump such .o back for user space to run objdump on. It all can be
> done without kernel involvement. Like tc command can copy .o and so on.
> But not everything is using tc.

That means kernel must ensure/verify that loaded insns also come from
that claimed object file; not sure if easily possible w/o parsing elf.
It could work if the kernel loads everything based on the content of
the object file itself, but that is not possible anymore since we have
bpf(2) already for doing that (but also would add a lot of complexity).

> Another alternative is to do a decompiler from bpf binary
> into meaningful C code. It's not trivial and names will be lost.
> bpf_comment approach is pretty cheap from kernel point of view
> and greatly helps visibility when users don't cheat with debug info.

Agree, it's non-trivial, would be really nice to have, though, so also
non-cooperative -g users could be better examined.

Thanks,
Daniel

^ permalink raw reply

* [net-next PATCH v3 6/6] virtio_net: xdp, add slowpath case for non contiguous buffers
From: John Fastabend @ 2016-11-29 20:11 UTC (permalink / raw)
  To: eric.dumazet, daniel, shm, davem, tgraf, alexei.starovoitov
  Cc: john.r.fastabend, netdev, bblanco, john.fastabend, brouer
In-Reply-To: <20161129200933.26851.41883.stgit@john-Precision-Tower-5810>

virtio_net XDP support expects receive buffers to be contiguous.
If this is not the case we enable a slowpath to allow connectivity
to continue but at a significan performance overhead associated with
linearizing data. To make it painfully aware to users that XDP is
running in a degraded mode we throw an xdp buffer error.

To linearize packets we allocate a page and copy the segments of
the data, including the header, into it. After this the page can be
handled by XDP code flow as normal.

Then depending on the return code the page is either freed or sent
to the XDP xmit path. There is no attempt to optimize this path.

Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
---
 drivers/net/virtio_net.c |   70 +++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 68 insertions(+), 2 deletions(-)

diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 9604e55..b0ce4ef 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -449,6 +449,56 @@ static struct sk_buff *receive_big(struct net_device *dev,
 	return NULL;
 }
 
+/* The conditions to enable XDP should preclude the underlying device from
+ * sending packets across multiple buffers (num_buf > 1). However per spec
+ * it does not appear to be illegal to do so but rather just against convention.
+ * So in order to avoid making a system unresponsive the packets are pushed
+ * into a page and the XDP program is run. This will be extremely slow and we
+ * push a warning to the user to fix this as soon as possible. Fixing this may
+ * require resolving the underlying hardware to determine why multiple buffers
+ * are being received or simply loading the XDP program in the ingress stack
+ * after the skb is built because there is no advantage to running it here
+ * anymore.
+ */
+static struct page *xdp_linearize_page(struct receive_queue *rq,
+				       u16 num_buf,
+				       struct page *p,
+				       int offset,
+				       unsigned int *len)
+{
+	struct page *page = alloc_page(GFP_ATOMIC);
+	unsigned int page_off = 0;
+
+	if (!page)
+		return NULL;
+
+	memcpy(page_address(page) + page_off, page_address(p) + offset, *len);
+	while (--num_buf) {
+		unsigned int buflen;
+		unsigned long ctx;
+		void *buf;
+		int off;
+
+		ctx = (unsigned long)virtqueue_get_buf(rq->vq, &buflen);
+		if (unlikely(!ctx))
+			goto err_buf;
+
+		buf = mergeable_ctx_to_buf_address(ctx);
+		p = virt_to_head_page(buf);
+		off = buf - page_address(p);
+
+		memcpy(page_address(page) + page_off,
+		       page_address(p) + off, buflen);
+		page_off += buflen;
+	}
+
+	*len = page_off;
+	return page;
+err_buf:
+	__free_pages(page, 0);
+	return NULL;
+}
+
 static struct sk_buff *receive_mergeable(struct net_device *dev,
 					 struct virtnet_info *vi,
 					 struct receive_queue *rq,
@@ -469,21 +519,37 @@ static struct sk_buff *receive_mergeable(struct net_device *dev,
 	rcu_read_lock();
 	xdp_prog = rcu_dereference(rq->xdp_prog);
 	if (xdp_prog) {
+		struct page *xdp_page;
 		u32 act;
 
 		if (num_buf > 1) {
 			bpf_warn_invalid_xdp_buffer();
-			goto err_xdp;
+
+			/* linearize data for XDP */
+			xdp_page = xdp_linearize_page(rq, num_buf,
+						      page, offset, &len);
+			if (!xdp_page)
+				goto err_xdp;
+			offset = len;
+		} else {
+			xdp_page = page;
 		}
 
-		act = do_xdp_prog(vi, xdp_prog, page, offset, len);
+		act = do_xdp_prog(vi, xdp_prog, xdp_page, offset, len);
 		switch (act) {
 		case XDP_PASS:
+			if (unlikely(xdp_page != page))
+				__free_pages(xdp_page, 0);
 			break;
 		case XDP_TX:
+			if (unlikely(xdp_page != page))
+				goto err_xdp;
+			rcu_read_unlock();
 			goto xdp_xmit;
 		case XDP_DROP:
 		default:
+			if (unlikely(xdp_page != page))
+				__free_pages(xdp_page, 0);
 			goto err_xdp;
 		}
 	}

^ permalink raw reply related

* Re: [PATCH] debugfs: improve formatting of debugfs_real_fops()
From: Jakub Kicinski @ 2016-11-29 20:11 UTC (permalink / raw)
  To: Greg Kroah-Hartman; +Cc: netdev, Nicolai Stange, Christian Lamparter
In-Reply-To: <20161129195805.GA2180@kroah.com>

On Tue, Nov 29, 2016 at 11:58 AM, Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
> On Thu, Nov 10, 2016 at 05:23:49PM +0000, Jakub Kicinski wrote:
>> Type of debugfs_real_fops() is longer than parameters and
>> the name, so there is no way to break the declaration nicely.
>> We have to go over 80 characters.
>>
>> Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
>> ---
>>  include/linux/debugfs.h | 3 +--
>>  1 file changed, 1 insertion(+), 2 deletions(-)
>
> Doesn't apply to my tree, what did you make this against?

net-next, sorry, it

Fixes: 68f929ff2654 ("debugfs: constify argument to debugfs_real_fops()")

I think that change still haven't propagated out of Dave's tree.  Dave
didn't take my fix up patch, though, so my plan was to resend it to
you during the merge window?  Would that make sense?

^ permalink raw reply

* [net-next PATCH v3 5/6] virtio_net: add XDP_TX support
From: John Fastabend @ 2016-11-29 20:11 UTC (permalink / raw)
  To: eric.dumazet, daniel, shm, davem, tgraf, alexei.starovoitov
  Cc: john.r.fastabend, netdev, bblanco, john.fastabend, brouer
In-Reply-To: <20161129200933.26851.41883.stgit@john-Precision-Tower-5810>

This adds support for the XDP_TX action to virtio_net. When an XDP
program is run and returns the XDP_TX action the virtio_net XDP
implementation will transmit the packet on a TX queue that aligns
with the current CPU that the XDP packet was processed on.

Before sending the packet the header is zeroed.  Also XDP is expected
to handle checksum correctly so no checksum offload  support is
provided.

Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
---
 drivers/net/virtio_net.c |   59 ++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 56 insertions(+), 3 deletions(-)

diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index a1bfa99..9604e55 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -330,12 +330,40 @@ static struct sk_buff *page_to_skb(struct virtnet_info *vi,
 	return skb;
 }
 
+static void virtnet_xdp_xmit(struct virtnet_info *vi,
+			     unsigned int qnum, struct xdp_buff *xdp)
+{
+	struct send_queue *sq = &vi->sq[qnum];
+	struct virtio_net_hdr_mrg_rxbuf *hdr;
+	unsigned int num_sg, len;
+	void *xdp_sent;
+
+	/* Free up any pending old buffers before queueing new ones. */
+	while ((xdp_sent = virtqueue_get_buf(sq->vq, &len)) != NULL) {
+		struct page *page = virt_to_head_page(xdp_sent);
+
+		put_page(page);
+	}
+
+	/* Zero header and leave csum up to XDP layers */
+	hdr = xdp->data;
+	memset(hdr, 0, vi->hdr_len);
+	hdr->hdr.gso_type = VIRTIO_NET_HDR_GSO_NONE;
+	hdr->hdr.flags = VIRTIO_NET_HDR_F_DATA_VALID;
+
+	num_sg = 1;
+	sg_init_one(sq->sg, xdp->data, xdp->data_end - xdp->data);
+	virtqueue_add_outbuf(sq->vq, sq->sg, num_sg, xdp->data, GFP_ATOMIC);
+	virtqueue_kick(sq->vq);
+}
+
 static u32 do_xdp_prog(struct virtnet_info *vi,
 		       struct bpf_prog *xdp_prog,
 		       struct page *page, int offset, int len)
 {
 	int hdr_padded_len;
 	struct xdp_buff xdp;
+	unsigned int qp;
 	u32 act;
 	u8 *buf;
 
@@ -353,9 +381,15 @@ static u32 do_xdp_prog(struct virtnet_info *vi,
 	switch (act) {
 	case XDP_PASS:
 		return XDP_PASS;
+	case XDP_TX:
+		qp = vi->curr_queue_pairs -
+			vi->xdp_queue_pairs +
+			smp_processor_id();
+		xdp.data = buf + (vi->mergeable_rx_bufs ? 0 : 4);
+		virtnet_xdp_xmit(vi, qp, &xdp);
+		return XDP_TX;
 	default:
 		bpf_warn_invalid_xdp_action(act);
-	case XDP_TX:
 	case XDP_ABORTED:
 	case XDP_DROP:
 		return XDP_DROP;
@@ -387,8 +421,16 @@ static struct sk_buff *receive_big(struct net_device *dev,
 	if (xdp_prog) {
 		u32 act = do_xdp_prog(vi, xdp_prog, page, 0, len);
 
-		if (act == XDP_DROP)
+		switch (act) {
+		case XDP_PASS:
+			break;
+		case XDP_TX:
+			rcu_read_unlock();
+			goto xdp_xmit;
+		case XDP_DROP:
+		default:
 			goto err_xdp;
+		}
 	}
 	rcu_read_unlock();
 
@@ -403,6 +445,7 @@ static struct sk_buff *receive_big(struct net_device *dev,
 err:
 	dev->stats.rx_dropped++;
 	give_pages(rq, page);
+xdp_xmit:
 	return NULL;
 }
 
@@ -421,6 +464,8 @@ static struct sk_buff *receive_mergeable(struct net_device *dev,
 	struct sk_buff *head_skb, *curr_skb;
 	struct bpf_prog *xdp_prog;
 
+	head_skb = NULL;
+
 	rcu_read_lock();
 	xdp_prog = rcu_dereference(rq->xdp_prog);
 	if (xdp_prog) {
@@ -432,8 +477,15 @@ static struct sk_buff *receive_mergeable(struct net_device *dev,
 		}
 
 		act = do_xdp_prog(vi, xdp_prog, page, offset, len);
-		if (act == XDP_DROP)
+		switch (act) {
+		case XDP_PASS:
+			break;
+		case XDP_TX:
+			goto xdp_xmit;
+		case XDP_DROP:
+		default:
 			goto err_xdp;
+		}
 	}
 	rcu_read_unlock();
 
@@ -510,6 +562,7 @@ static struct sk_buff *receive_mergeable(struct net_device *dev,
 err_buf:
 	dev->stats.rx_dropped++;
 	dev_kfree_skb(head_skb);
+xdp_xmit:
 	return NULL;
 }
 

^ permalink raw reply related

* [net-next PATCH v3 4/6] virtio_net: add dedicated XDP transmit queues
From: John Fastabend @ 2016-11-29 20:10 UTC (permalink / raw)
  To: eric.dumazet, daniel, shm, davem, tgraf, alexei.starovoitov
  Cc: john.r.fastabend, netdev, bblanco, john.fastabend, brouer
In-Reply-To: <20161129200933.26851.41883.stgit@john-Precision-Tower-5810>

XDP requires using isolated transmit queues to avoid interference
with normal networking stack (BQL, NETDEV_TX_BUSY, etc). This patch
adds a XDP queue per cpu when a XDP program is loaded and does not
expose the queues to the OS via the normal API call to
netif_set_real_num_tx_queues(). This way the stack will never push
an skb to these queues.

However virtio/vhost/qemu implementation only allows for creating
TX/RX queue pairs at this time so creating only TX queues was not
possible. And because the associated RX queues are being created I
went ahead and exposed these to the stack and let the backend use
them. This creates more RX queues visible to the network stack than
TX queues which is worth mentioning but does not cause any issues as
far as I can tell.

Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
---
 drivers/net/virtio_net.c |   30 ++++++++++++++++++++++++++++--
 1 file changed, 28 insertions(+), 2 deletions(-)

diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 32126bf..a1bfa99 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -114,6 +114,9 @@ struct virtnet_info {
 	/* # of queue pairs currently used by the driver */
 	u16 curr_queue_pairs;
 
+	/* # of XDP queue pairs currently used by the driver */
+	u16 xdp_queue_pairs;
+
 	/* I like... big packets and I cannot lie! */
 	bool big_packets;
 
@@ -1533,7 +1536,8 @@ static int virtnet_xdp_set(struct net_device *dev, struct bpf_prog *prog)
 {
 	struct virtnet_info *vi = netdev_priv(dev);
 	struct bpf_prog *old_prog;
-	int i;
+	u16 xdp_qp = 0, curr_qp;
+	int err, i;
 
 	if ((dev->features & NETIF_F_LRO) && prog) {
 		netdev_warn(dev, "can't set XDP while LRO is on, disable LRO first\n");
@@ -1550,12 +1554,34 @@ static int virtnet_xdp_set(struct net_device *dev, struct bpf_prog *prog)
 		return -EINVAL;
 	}
 
+	curr_qp = vi->curr_queue_pairs - vi->xdp_queue_pairs;
+	if (prog)
+		xdp_qp = nr_cpu_ids;
+
+	/* XDP requires extra queues for XDP_TX */
+	if (curr_qp + xdp_qp > vi->max_queue_pairs) {
+		netdev_warn(dev, "request %i queues but max is %i\n",
+			    curr_qp + xdp_qp, vi->max_queue_pairs);
+		return -ENOMEM;
+	}
+
+	err = virtnet_set_queues(vi, curr_qp + xdp_qp);
+	if (err) {
+		dev_warn(&dev->dev, "XDP Device queue allocation failure.\n");
+		return err;
+	}
+
 	if (prog) {
 		prog = bpf_prog_add(prog, vi->max_queue_pairs - 1);
-		if (IS_ERR(prog))
+		if (IS_ERR(prog)) {
+			virtnet_set_queues(vi, curr_qp);
 			return PTR_ERR(prog);
+		}
 	}
 
+	vi->xdp_queue_pairs = xdp_qp;
+	netif_set_real_num_rx_queues(dev, curr_qp + xdp_qp);
+
 	for (i = 0; i < vi->max_queue_pairs; i++) {
 		old_prog = rtnl_dereference(vi->rq[i].xdp_prog);
 		rcu_assign_pointer(vi->rq[i].xdp_prog, prog);

^ permalink raw reply related

* [net-next PATCH v3 3/6] virtio_net: Add XDP support
From: John Fastabend @ 2016-11-29 20:10 UTC (permalink / raw)
  To: eric.dumazet, daniel, shm, davem, tgraf, alexei.starovoitov
  Cc: john.r.fastabend, netdev, bblanco, john.fastabend, brouer
In-Reply-To: <20161129200933.26851.41883.stgit@john-Precision-Tower-5810>

From: John Fastabend <john.fastabend@gmail.com>

This adds XDP support to virtio_net. Some requirements must be
met for XDP to be enabled depending on the mode. First it will
only be supported with LRO disabled so that data is not pushed
across multiple buffers. Second the MTU must be less than a page
size to avoid having to handle XDP across multiple pages.

If mergeable receive is enabled this patch only supports the case
where header and data are in the same buf which we can check when
a packet is received by looking at num_buf. If the num_buf is
greater than 1 and a XDP program is loaded the packet is dropped
and a warning is thrown. When any_header_sg is set this does not
happen and both header and data is put in a single buffer as expected
so we check this when XDP programs are loaded.  Subsequent patches
will process the packet in a degraded mode to ensure connectivity
and correctness is not lost even if backend pushes packets into
multiple buffers.

If big packets mode is enabled and MTU/LRO conditions above are
met then XDP is allowed.

This patch was tested with qemu with vhost=on and vhost=off where
mergable and big_packet modes were forced via hard coding feature
negotiation. Multiple buffers per packet was forced via a small
test patch to vhost.c in the vhost=on qemu mode.

Suggested-by: Shrijeet Mukherjee <shrijeet@gmail.com>
Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
---
 drivers/net/virtio_net.c |  154 +++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 150 insertions(+), 4 deletions(-)

diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 8189e5b..32126bf 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -22,6 +22,7 @@
 #include <linux/module.h>
 #include <linux/virtio.h>
 #include <linux/virtio_net.h>
+#include <linux/bpf.h>
 #include <linux/scatterlist.h>
 #include <linux/if_vlan.h>
 #include <linux/slab.h>
@@ -81,6 +82,8 @@ struct receive_queue {
 
 	struct napi_struct napi;
 
+	struct bpf_prog __rcu *xdp_prog;
+
 	/* Chain pages by the private ptr. */
 	struct page *pages;
 
@@ -324,6 +327,38 @@ static struct sk_buff *page_to_skb(struct virtnet_info *vi,
 	return skb;
 }
 
+static u32 do_xdp_prog(struct virtnet_info *vi,
+		       struct bpf_prog *xdp_prog,
+		       struct page *page, int offset, int len)
+{
+	int hdr_padded_len;
+	struct xdp_buff xdp;
+	u32 act;
+	u8 *buf;
+
+	buf = page_address(page) + offset;
+
+	if (vi->mergeable_rx_bufs)
+		hdr_padded_len = sizeof(struct virtio_net_hdr_mrg_rxbuf);
+	else
+		hdr_padded_len = sizeof(struct padded_vnet_hdr);
+
+	xdp.data = buf + hdr_padded_len;
+	xdp.data_end = xdp.data + (len - vi->hdr_len);
+
+	act = bpf_prog_run_xdp(xdp_prog, &xdp);
+	switch (act) {
+	case XDP_PASS:
+		return XDP_PASS;
+	default:
+		bpf_warn_invalid_xdp_action(act);
+	case XDP_TX:
+	case XDP_ABORTED:
+	case XDP_DROP:
+		return XDP_DROP;
+	}
+}
+
 static struct sk_buff *receive_small(struct virtnet_info *vi, void *buf, unsigned int len)
 {
 	struct sk_buff * skb = buf;
@@ -340,14 +375,28 @@ static struct sk_buff *receive_big(struct net_device *dev,
 				   void *buf,
 				   unsigned int len)
 {
+	struct bpf_prog *xdp_prog;
 	struct page *page = buf;
-	struct sk_buff *skb = page_to_skb(vi, rq, page, 0, len, PAGE_SIZE);
+	struct sk_buff *skb;
 
+	rcu_read_lock();
+	xdp_prog = rcu_dereference(rq->xdp_prog);
+	if (xdp_prog) {
+		u32 act = do_xdp_prog(vi, xdp_prog, page, 0, len);
+
+		if (act == XDP_DROP)
+			goto err_xdp;
+	}
+	rcu_read_unlock();
+
+	skb = page_to_skb(vi, rq, page, 0, len, PAGE_SIZE);
 	if (unlikely(!skb))
 		goto err;
 
 	return skb;
 
+err_xdp:
+	rcu_read_unlock();
 err:
 	dev->stats.rx_dropped++;
 	give_pages(rq, page);
@@ -366,10 +415,27 @@ static struct sk_buff *receive_mergeable(struct net_device *dev,
 	struct page *page = virt_to_head_page(buf);
 	int offset = buf - page_address(page);
 	unsigned int truesize = max(len, mergeable_ctx_to_buf_truesize(ctx));
+	struct sk_buff *head_skb, *curr_skb;
+	struct bpf_prog *xdp_prog;
 
-	struct sk_buff *head_skb = page_to_skb(vi, rq, page, offset, len,
-					       truesize);
-	struct sk_buff *curr_skb = head_skb;
+	rcu_read_lock();
+	xdp_prog = rcu_dereference(rq->xdp_prog);
+	if (xdp_prog) {
+		u32 act;
+
+		if (num_buf > 1) {
+			bpf_warn_invalid_xdp_buffer();
+			goto err_xdp;
+		}
+
+		act = do_xdp_prog(vi, xdp_prog, page, offset, len);
+		if (act == XDP_DROP)
+			goto err_xdp;
+	}
+	rcu_read_unlock();
+
+	head_skb = page_to_skb(vi, rq, page, offset, len, truesize);
+	curr_skb = head_skb;
 
 	if (unlikely(!curr_skb))
 		goto err_skb;
@@ -423,6 +489,8 @@ static struct sk_buff *receive_mergeable(struct net_device *dev,
 	ewma_pkt_len_add(&rq->mrg_avg_pkt_len, head_skb->len);
 	return head_skb;
 
+err_xdp:
+	rcu_read_unlock();
 err_skb:
 	put_page(page);
 	while (--num_buf) {
@@ -1328,6 +1396,13 @@ static int virtnet_set_channels(struct net_device *dev,
 	if (queue_pairs > vi->max_queue_pairs || queue_pairs == 0)
 		return -EINVAL;
 
+	/* For now we don't support modifying channels while XDP is loaded
+	 * also when XDP is loaded all RX queues have XDP programs so we only
+	 * need to check a single RX queue.
+	 */
+	if (vi->rq[0].xdp_prog)
+		return -EINVAL;
+
 	get_online_cpus();
 	err = virtnet_set_queues(vi, queue_pairs);
 	if (!err) {
@@ -1454,6 +1529,68 @@ static int virtnet_set_features(struct net_device *netdev,
 	return 0;
 }
 
+static int virtnet_xdp_set(struct net_device *dev, struct bpf_prog *prog)
+{
+	struct virtnet_info *vi = netdev_priv(dev);
+	struct bpf_prog *old_prog;
+	int i;
+
+	if ((dev->features & NETIF_F_LRO) && prog) {
+		netdev_warn(dev, "can't set XDP while LRO is on, disable LRO first\n");
+		return -EINVAL;
+	}
+
+	if (vi->mergeable_rx_bufs && !vi->any_header_sg) {
+		netdev_warn(dev, "XDP expects header/data in single page\n");
+		return -EINVAL;
+	}
+
+	if (dev->mtu > PAGE_SIZE) {
+		netdev_warn(dev, "XDP requires MTU less than %lu\n", PAGE_SIZE);
+		return -EINVAL;
+	}
+
+	if (prog) {
+		prog = bpf_prog_add(prog, vi->max_queue_pairs - 1);
+		if (IS_ERR(prog))
+			return PTR_ERR(prog);
+	}
+
+	for (i = 0; i < vi->max_queue_pairs; i++) {
+		old_prog = rtnl_dereference(vi->rq[i].xdp_prog);
+		rcu_assign_pointer(vi->rq[i].xdp_prog, prog);
+		if (old_prog)
+			bpf_prog_put(old_prog);
+	}
+
+	return 0;
+}
+
+static bool virtnet_xdp_query(struct net_device *dev)
+{
+	struct virtnet_info *vi = netdev_priv(dev);
+	int i;
+
+	for (i = 0; i < vi->max_queue_pairs; i++) {
+		if (vi->rq[i].xdp_prog)
+			return true;
+	}
+	return false;
+}
+
+static int virtnet_xdp(struct net_device *dev, struct netdev_xdp *xdp)
+{
+	switch (xdp->command) {
+	case XDP_SETUP_PROG:
+		return virtnet_xdp_set(dev, xdp->prog);
+	case XDP_QUERY_PROG:
+		xdp->prog_attached = virtnet_xdp_query(dev);
+		return 0;
+	default:
+		return -EINVAL;
+	}
+}
+
 static const struct net_device_ops virtnet_netdev = {
 	.ndo_open            = virtnet_open,
 	.ndo_stop   	     = virtnet_close,
@@ -1471,6 +1608,7 @@ static int virtnet_set_features(struct net_device *netdev,
 	.ndo_busy_poll		= virtnet_busy_poll,
 #endif
 	.ndo_set_features	= virtnet_set_features,
+	.ndo_xdp		= virtnet_xdp,
 };
 
 static void virtnet_config_changed_work(struct work_struct *work)
@@ -1527,12 +1665,20 @@ static void virtnet_free_queues(struct virtnet_info *vi)
 
 static void free_receive_bufs(struct virtnet_info *vi)
 {
+	struct bpf_prog *old_prog;
 	int i;
 
+	rtnl_lock();
 	for (i = 0; i < vi->max_queue_pairs; i++) {
 		while (vi->rq[i].pages)
 			__free_pages(get_a_page(&vi->rq[i], GFP_KERNEL), 0);
+
+		old_prog = rtnl_dereference(vi->rq[i].xdp_prog);
+		RCU_INIT_POINTER(vi->rq[i].xdp_prog, NULL);
+		if (old_prog)
+			bpf_prog_put(old_prog);
 	}
+	rtnl_unlock();
 }
 
 static void free_receive_page_frags(struct virtnet_info *vi)

^ permalink raw reply related

* [net-next PATCH v3 2/6] net: xdp: add invalid buffer warning
From: John Fastabend @ 2016-11-29 20:09 UTC (permalink / raw)
  To: eric.dumazet, daniel, shm, davem, tgraf, alexei.starovoitov
  Cc: john.r.fastabend, netdev, bblanco, john.fastabend, brouer
In-Reply-To: <20161129200933.26851.41883.stgit@john-Precision-Tower-5810>

This adds a warning for drivers to use when encountering an invalid
buffer for XDP. For normal cases this should not happen but to catch
this in virtual/qemu setups that I may not have expected from the
emulation layer having a standard warning is useful.

Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
---
 include/linux/filter.h |    1 +
 net/core/filter.c      |    6 ++++++
 2 files changed, 7 insertions(+)

diff --git a/include/linux/filter.h b/include/linux/filter.h
index 1f09c52..0c79004 100644
--- a/include/linux/filter.h
+++ b/include/linux/filter.h
@@ -595,6 +595,7 @@ int sk_get_filter(struct sock *sk, struct sock_filter __user *filter,
 struct bpf_prog *bpf_patch_insn_single(struct bpf_prog *prog, u32 off,
 				       const struct bpf_insn *patch, u32 len);
 void bpf_warn_invalid_xdp_action(u32 act);
+void bpf_warn_invalid_xdp_buffer(void);
 
 #ifdef CONFIG_BPF_JIT
 extern int bpf_jit_enable;
diff --git a/net/core/filter.c b/net/core/filter.c
index dece94f..5f3ed4e 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -2774,6 +2774,12 @@ void bpf_warn_invalid_xdp_action(u32 act)
 }
 EXPORT_SYMBOL_GPL(bpf_warn_invalid_xdp_action);
 
+void bpf_warn_invalid_xdp_buffer(void)
+{
+	WARN_ONCE(1, "Illegal XDP buffer encountered, expect throughput degradation\n");
+}
+EXPORT_SYMBOL_GPL(bpf_warn_invalid_xdp_buffer);
+
 static u32 sk_filter_convert_ctx_access(enum bpf_access_type type, int dst_reg,
 					int src_reg, int ctx_off,
 					struct bpf_insn *insn_buf,

^ permalink raw reply related

* [net-next PATCH v3 1/6] net: virtio dynamically disable/enable LRO
From: John Fastabend @ 2016-11-29 20:09 UTC (permalink / raw)
  To: eric.dumazet, daniel, shm, davem, tgraf, alexei.starovoitov
  Cc: john.r.fastabend, netdev, bblanco, john.fastabend, brouer

This adds support for dynamically setting the LRO feature flag. The
message to control guest features in the backend uses the
CTRL_GUEST_OFFLOADS msg type.

Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
---
 drivers/net/virtio_net.c |   45 ++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 44 insertions(+), 1 deletion(-)

diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index ca5239a..8189e5b 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -1419,6 +1419,41 @@ static void virtnet_init_settings(struct net_device *dev)
 	.set_settings = virtnet_set_settings,
 };
 
+static int virtnet_set_features(struct net_device *netdev,
+				netdev_features_t features)
+{
+	struct virtnet_info *vi = netdev_priv(netdev);
+	struct virtio_device *vdev = vi->vdev;
+	struct scatterlist sg;
+	u64 offloads = 0;
+
+	if (features & NETIF_F_LRO)
+		offloads |= (1 << VIRTIO_NET_F_GUEST_TSO4) |
+			    (1 << VIRTIO_NET_F_GUEST_TSO6);
+
+	if (features & NETIF_F_RXCSUM)
+		offloads |= (1 << VIRTIO_NET_F_GUEST_CSUM);
+
+	if (virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_GUEST_OFFLOADS)) {
+		sg_init_one(&sg, &offloads, sizeof(uint64_t));
+		if (!virtnet_send_command(vi,
+					  VIRTIO_NET_CTRL_GUEST_OFFLOADS,
+					  VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET,
+					  &sg)) {
+			dev_warn(&netdev->dev,
+				 "Failed to set guest offloads by virtnet command.\n");
+			return -EINVAL;
+		}
+	} else if (virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_GUEST_OFFLOADS) &&
+		   !virtio_has_feature(vdev, VIRTIO_F_VERSION_1)) {
+		dev_warn(&netdev->dev,
+			 "No support for setting offloads pre version_1.\n");
+		return -EINVAL;
+	}
+
+	return 0;
+}
+
 static const struct net_device_ops virtnet_netdev = {
 	.ndo_open            = virtnet_open,
 	.ndo_stop   	     = virtnet_close,
@@ -1435,6 +1470,7 @@ static void virtnet_init_settings(struct net_device *dev)
 #ifdef CONFIG_NET_RX_BUSY_POLL
 	.ndo_busy_poll		= virtnet_busy_poll,
 #endif
+	.ndo_set_features	= virtnet_set_features,
 };
 
 static void virtnet_config_changed_work(struct work_struct *work)
@@ -1810,6 +1846,12 @@ static int virtnet_probe(struct virtio_device *vdev)
 	if (virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_CSUM))
 		dev->features |= NETIF_F_RXCSUM;
 
+	if (virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_TSO4) &&
+	    virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_TSO6)) {
+		dev->features |= NETIF_F_LRO;
+		dev->hw_features |= NETIF_F_LRO;
+	}
+
 	dev->vlan_features = dev->features;
 
 	/* MTU range: 68 - 65535 */
@@ -2047,7 +2089,8 @@ static int virtnet_restore(struct virtio_device *vdev)
 	VIRTIO_NET_F_CTRL_RX, VIRTIO_NET_F_CTRL_VLAN, \
 	VIRTIO_NET_F_GUEST_ANNOUNCE, VIRTIO_NET_F_MQ, \
 	VIRTIO_NET_F_CTRL_MAC_ADDR, \
-	VIRTIO_NET_F_MTU
+	VIRTIO_NET_F_MTU, \
+	VIRTIO_NET_F_CTRL_GUEST_OFFLOADS
 
 static unsigned int features[] = {
 	VIRTNET_FEATURES,

^ permalink raw reply related

* [net-next PATCH v3 0/6] XDP for virtio_net
From: John Fastabend @ 2016-11-29 20:05 UTC (permalink / raw)
  To: tgraf, shm, alexei.starovoitov, daniel, davem
  Cc: john.r.fastabend, netdev, bblanco, john.fastabend, brouer

This implements virtio_net for the mergeable buffers and big_packet
modes. I tested this with vhost_net running on qemu and did not see
any issues. For testing num_buf > 1 I added a hack to vhost driver
to only but 100 bytes per buffer.

There are some restrictions for XDP to be enabled and work well
(see patch 3) for more details.

  1. LRO must be off
  2. MTU must be less than PAGE_SIZE
  3. queues must be available to dedicate to XDP
  4. num_bufs received in mergeable buffers must be 1
  5. big_packet mode must have all data on single page

Please review any comments/feedback welcome as always.

v2, fixes rcu usage throughout thanks to Eric and the use of
num_online_cpus() usage thanks to Jakub.

v3, add slowpath patch to handle num_bufs > 1

Thanks,
John
---

John Fastabend (6):
      net: virtio dynamically disable/enable LRO
      net: xdp: add invalid buffer warning
      virtio_net: Add XDP support
      virtio_net: add dedicated XDP transmit queues
      virtio_net: add XDP_TX support
      virtio_net: xdp, add slowpath case for non contiguous buffers


 drivers/net/virtio_net.c |  344 +++++++++++++++++++++++++++++++++++++++++++++-
 include/linux/filter.h   |    1 
 net/core/filter.c        |    6 +
 3 files changed, 346 insertions(+), 5 deletions(-)

^ permalink raw reply

* Re: [PATCH net-next v5 2/3] bpf: Add new cgroup attach type to enable sock modifications
From: Alexei Starovoitov @ 2016-11-29 20:01 UTC (permalink / raw)
  To: David Ahern; +Cc: netdev, daniel, ast, daniel, maheshb, tgraf
In-Reply-To: <1480434813-3141-3-git-send-email-dsa@cumulusnetworks.com>

On Tue, Nov 29, 2016 at 07:53:32AM -0800, David Ahern wrote:
> Add new cgroup based program type, BPF_PROG_TYPE_CGROUP_SOCK. Similar to
> BPF_PROG_TYPE_CGROUP_SKB programs can be attached to a cgroup and run
> any time a process in the cgroup opens an AF_INET or AF_INET6 socket.
> Currently only sk_bound_dev_if is exported to userspace for modification
> by a bpf program.
> 
> This allows a cgroup to be configured such that AF_INET{6} sockets opened
> by processes are automatically bound to a specific device. In turn, this
> enables the running of programs that do not support SO_BINDTODEVICE in a
> specific VRF context / L3 domain.
> 
> Signed-off-by: David Ahern <dsa@cumulusnetworks.com>
...
> +struct bpf_sock {
> +	__u32 bound_dev_if;
> +};

overall looks great to me.
Could you also expose sk_protcol and sk_type as read only fields?
They have user space visible values already and will make this new
BPF_PROG_TYPE_CGROUP_SOCK program type much more useful beyond vrf
use case. Like we'll be able to write a tiny bpf program to block all
raw sockets or all udp sockets for an application within a given cgroup.
If someone would want to prevent udp traffic from an application,
it can be done here within close to zero overhead for socket() syscall
instead of checking every packet at networking layer.
It can help vrf use case as well, so you can auto-bindtodevice
only udp and tcp sockets instead of all... or do it for ipv4 or ipv6 only.
Plenty of interesting opportunities with just two extra fields
that cost nothing when not in use.

^ permalink raw reply

* Re: [PATCH v3] ethernet :mellanox :mlx4: Replace pci_pool_alloc by pci_pool_zalloc
From: Yuval Shaia @ 2016-11-29 19:58 UTC (permalink / raw)
  To: Souptick Joarder
  Cc: sergei.shtylyov, yishaih, netdev, linux-rdma, sahu.rameshwar73
In-Reply-To: <20161129194611.GA4088@jordon-HP-15-Notebook-PC>

On Wed, Nov 30, 2016 at 01:16:12AM +0530, Souptick Joarder wrote:
> In mlx4_alloc_cmd_mailbox(), pci_pool_alloc() followed by memset will be
> replaced by pci_pool_zalloc()
> 
> Signed-off-by: Souptick joarder <jrdr.linux@gmail.com>
> ---
> v3:
>   - Fixed alignment issues

You mean remove extra empty line?

Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com>

> 
> v2:
>   - Address comment from sergei
>     Alignment was not proper
> 
>  drivers/net/ethernet/mellanox/mlx4/cmd.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/net/ethernet/mellanox/mlx4/cmd.c b/drivers/net/ethernet/mellanox/mlx4/cmd.c
> index e36bebc..a49072b4 100644
> --- a/drivers/net/ethernet/mellanox/mlx4/cmd.c
> +++ b/drivers/net/ethernet/mellanox/mlx4/cmd.c
> @@ -2679,15 +2679,13 @@ struct mlx4_cmd_mailbox *mlx4_alloc_cmd_mailbox(struct mlx4_dev *dev)
>  	if (!mailbox)
>  		return ERR_PTR(-ENOMEM);
> 
> -	mailbox->buf = pci_pool_alloc(mlx4_priv(dev)->cmd.pool, GFP_KERNEL,
> -				      &mailbox->dma);
> +	mailbox->buf = pci_pool_zalloc(mlx4_priv(dev)->cmd.pool, GFP_KERNEL,
> +				       &mailbox->dma);
>  	if (!mailbox->buf) {
>  		kfree(mailbox);
>  		return ERR_PTR(-ENOMEM);
>  	}
> 
> -	memset(mailbox->buf, 0, MLX4_MAILBOX_SIZE);
> -
>  	return mailbox;
>  }
>  EXPORT_SYMBOL_GPL(mlx4_alloc_cmd_mailbox);
> --
> 1.9.1
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rdma" 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: 4.9-rc7: (forcedeth?) BUG: sleeping function called from invalid context at kernel/irq/manage.c:110
From: Eric Dumazet @ 2016-11-29 19:58 UTC (permalink / raw)
  To: Meelis Roos; +Cc: Linus Torvalds, Linux Kernel list, netdev
In-Reply-To: <alpine.LRH.2.20.1611292309490.31348@math.ut.ee>

On Tue, 2016-11-29 at 23:16 +0200, Meelis Roos wrote:
> > On Tue, Nov 29, 2016 at 12:26 PM, Meelis Roos <mroos@linux.ee> wrote:
> > > This is 4.9-rc7 on Sun Ultra 20 (Opteron 175 on NVidia chipset PC with
> > > NVidia ethernet).
> > >
> > > BUG: sleeping function called from invalid context at kernel/irq/manage.c:110
> > 
> > Hmm. No changes in either forcedeth or in the synchronize_irq() debugging.
> [...]
> > But none of this looks new. I don't see _anything_ in any of these
> > areas that has changed since 4.8.
> > 
> > Which is why I suspect you changed something in your setup wrt
> > netconsole or your kernel config?
> 
> No changes that I could see. Only answered oldconfig questions, diff 
> below. /etc/default/grub is from May so not changed recently. Just 
> verified that 4.8.0 dmesg did not contain these warnings.
> 
> Conf diff and current config are below:

nv_do_nic_poll() is simply buggy and needs a fix.

synchronize_irq() can sleep.

^ permalink raw reply

* Re: [PATCH] debugfs: improve formatting of debugfs_real_fops()
From: Greg Kroah-Hartman @ 2016-11-29 19:58 UTC (permalink / raw)
  To: Jakub Kicinski; +Cc: netdev, Nicolai Stange, Christian Lamparter
In-Reply-To: <1478798629-22318-1-git-send-email-jakub.kicinski@netronome.com>

On Thu, Nov 10, 2016 at 05:23:49PM +0000, Jakub Kicinski wrote:
> Type of debugfs_real_fops() is longer than parameters and
> the name, so there is no way to break the declaration nicely.
> We have to go over 80 characters.
> 
> Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
> ---
>  include/linux/debugfs.h | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)

Doesn't apply to my tree, what did you make this against?

thanks,

greg k-h

^ permalink raw reply

* Re: [PATCH net-next] bpf: add test for the verifier equal logic bug
From: Josef Bacik @ 2016-11-29 19:50 UTC (permalink / raw)
  To: Daniel Borkmann, davem, netdev, ast, jannh, kernel-team
In-Reply-To: <583DD1C0.1010209@iogearbox.net>

On 11/29/2016 02:06 PM, Daniel Borkmann wrote:
> On 11/29/2016 06:35 PM, Josef Bacik wrote:
>> This is a test to verify that
>>
>> bpf: fix states equal logic for varlen access
>>
>> actually fixed the problem.  The problem was if the register we added to our map
>> register was UNKNOWN in both the false and true branches and the only thing that
>> changed was the range then we'd incorrectly assume that the true branch was
>> valid, which it really wasnt.  This tests this case and properly fails without
>> my fix in place and passes with it in place.
>>
>> Signed-off-by: Josef Bacik <jbacik@fb.com>
>
> Acked-by: Daniel Borkmann <daniel@iogearbox.net>
>
> Thanks a lot for the test case! They are always useful to have ... which
> just reminds me: it seems we didn't add anything for f23cc643f9ba ("bpf:
> fix range arithmetic for bpf map access"). ;-)

I was hoping you wouldn't notice ;).  I'll add one in the next couple of days. 
Thanks,

Josef

^ permalink raw reply

* Re: 4.9-rc7: (forcedeth?) BUG: sleeping function called from invalid context at kernel/irq/manage.c:110
From: Linus Torvalds @ 2016-11-29 19:50 UTC (permalink / raw)
  To: Meelis Roos; +Cc: Linux Kernel list, Network Development
In-Reply-To: <alpine.LRH.2.20.1611292309490.31348@math.ut.ee>

On Tue, Nov 29, 2016 at 1:16 PM, Meelis Roos <mroos@linux.ee> wrote:
> [...]
>> But none of this looks new. I don't see _anything_ in any of these
>> areas that has changed since 4.8.
>>
>> Which is why I suspect you changed something in your setup wrt
>> netconsole or your kernel config?
>
> No changes that I could see. Only answered oldconfig questions, diff
> below. /etc/default/grub is from May so not changed recently. Just
> verified that 4.8.0 dmesg did not contain these warnings.

Hmm. I wonder if it might just be timing (the netpoll_poll_dev() thing
is only called conditionally, and it depends on magic details and I
guess you might just have gotten unlucky).

But it would be good if you can bisect it...

           Linus

^ permalink raw reply

* [PATCH v3] ethernet :mellanox :mlx4: Replace pci_pool_alloc by pci_pool_zalloc
From: Souptick Joarder @ 2016-11-29 19:46 UTC (permalink / raw)
  To: sergei.shtylyov, yishaih; +Cc: netdev, linux-rdma, sahu.rameshwar73

In mlx4_alloc_cmd_mailbox(), pci_pool_alloc() followed by memset will be
replaced by pci_pool_zalloc()

Signed-off-by: Souptick joarder <jrdr.linux@gmail.com>
---
v3:
  - Fixed alignment issues

v2:
  - Address comment from sergei
    Alignment was not proper

 drivers/net/ethernet/mellanox/mlx4/cmd.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx4/cmd.c b/drivers/net/ethernet/mellanox/mlx4/cmd.c
index e36bebc..a49072b4 100644
--- a/drivers/net/ethernet/mellanox/mlx4/cmd.c
+++ b/drivers/net/ethernet/mellanox/mlx4/cmd.c
@@ -2679,15 +2679,13 @@ struct mlx4_cmd_mailbox *mlx4_alloc_cmd_mailbox(struct mlx4_dev *dev)
 	if (!mailbox)
 		return ERR_PTR(-ENOMEM);

-	mailbox->buf = pci_pool_alloc(mlx4_priv(dev)->cmd.pool, GFP_KERNEL,
-				      &mailbox->dma);
+	mailbox->buf = pci_pool_zalloc(mlx4_priv(dev)->cmd.pool, GFP_KERNEL,
+				       &mailbox->dma);
 	if (!mailbox->buf) {
 		kfree(mailbox);
 		return ERR_PTR(-ENOMEM);
 	}

-	memset(mailbox->buf, 0, MLX4_MAILBOX_SIZE);
-
 	return mailbox;
 }
 EXPORT_SYMBOL_GPL(mlx4_alloc_cmd_mailbox);

^ permalink raw reply related

* Re: [PATCH net-next v5 1/3] bpf: Refactor cgroups code in prep for new type
From: Alexei Starovoitov @ 2016-11-29 19:41 UTC (permalink / raw)
  To: David Ahern; +Cc: netdev, daniel, ast, daniel, maheshb, tgraf
In-Reply-To: <1480434813-3141-2-git-send-email-dsa@cumulusnetworks.com>

On Tue, Nov 29, 2016 at 07:53:31AM -0800, David Ahern wrote:
> Code move and rename only; no functional change intended.
> 
> Signed-off-by: David Ahern <dsa@cumulusnetworks.com>

Acked-by: Alexei Starovoitov <ast@kernel.org>

^ permalink raw reply

* Re: [PATCH net-next] cgroup, bpf: remove unnecessary #include
From: Alexei Starovoitov @ 2016-11-29 19:26 UTC (permalink / raw)
  To: Daniel Borkmann, David S. Miller
  Cc: Daniel Mack, Tejun Heo, netdev@vger.kernel.org
In-Reply-To: <583D5D00.4070101@iogearbox.net>

On Tue, Nov 29, 2016 at 2:48 AM, Daniel Borkmann <daniel@iogearbox.net> wrote:
> On 11/26/2016 08:23 AM, Alexei Starovoitov wrote:
>>
>> this #include is unnecessary and brings whole set of
>> other headers into cgroup-defs.h. Remove it.
>>
>> Fixes: 3007098494be ("cgroup: add support for eBPF programs")
>> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
>
>
> This fixes many build errors in samples/bpf/ due to wrong helper
> redefinitions (originating from kernel includes conflicting with
> samples' helper declarations).
>
> I don't see it pushed out to net-next yet, so:
>
> Acked-by: Daniel Borkmann <daniel@iogearbox.net>

Dave,
this patch is marked as 'accepted', but I don't see in net-next ...
please double check.
Thanks!

^ permalink raw reply

* Re: 4.9-rc7: (forcedeth?) BUG: sleeping function called from invalid context at kernel/irq/manage.c:110
From: Linus Torvalds @ 2016-11-29 19:11 UTC (permalink / raw)
  To: Meelis Roos; +Cc: Linux Kernel list, netdev
In-Reply-To: <alpine.LRH.2.20.1611292222200.31348@math.ut.ee>

On Tue, Nov 29, 2016 at 12:26 PM, Meelis Roos <mroos@linux.ee> wrote:
> This is 4.9-rc7 on Sun Ultra 20 (Opteron 175 on NVidia chipset PC with
> NVidia ethernet).
>
> BUG: sleeping function called from invalid context at kernel/irq/manage.c:110

Hmm. No changes in either forcedeth or in the synchronize_irq() debugging.

It seems to be due to netconsole. Did you enable new debugging (like
the DEBUG_ATOMIC_SLEEP config option) or change any netconsole things?

It looks like it's simply the dev_info() call in usb_add_hcd():

        dev_info(hcd->self.controller, "%s\n", hcd->product_desc);

and the printk() in amd64_edac_init():

        printk(KERN_INFO "AMD64 EDAC driver v%s\n", EDAC_AMD64_VERSION);

and yes, netconsole does "write_msg()" which is run with interrupts
disabled and the 'target_list_lock' spinlock held.

So when netpoll_send_udp() then calls down to the NIC poll routine, we
definitely are in an atomic context.

But none of this looks new. I don't see _anything_ in any of these
areas that has changed since 4.8.

Which is why I suspect you changed something in your setup wrt
netconsole or your kernel config?

                 Linus

^ permalink raw reply

* Re: [PATCH net][v2] bpf: fix states equal logic for varlen access
From: Daniel Borkmann @ 2016-11-29 19:09 UTC (permalink / raw)
  To: Josef Bacik, davem, netdev, ast, jannh, kernel-team
In-Reply-To: <1480440429-2531-1-git-send-email-jbacik@fb.com>

On 11/29/2016 06:27 PM, Josef Bacik wrote:
> If we have a branch that looks something like this
>
> int foo = map->value;
> if (condition) {
>    foo += blah;
> } else {
>    foo = bar;
> }
> map->array[foo] = baz;
>
> We will incorrectly assume that the !condition branch is equal to the condition
> branch as the register for foo will be UNKNOWN_VALUE in both cases.  We need to
> adjust this logic to only do this if we didn't do a varlen access after we
> processed the !condition branch, otherwise we have different ranges and need to
> check the other branch as well.
>
> Fixes: 484611357c19 ("bpf: allow access into map value arrays")
> Reported-by: Jann Horn <jannh@google.com>
> Signed-off-by: Josef Bacik <jbacik@fb.com>

Acked-by: Daniel Borkmann <daniel@iogearbox.net>

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox