1. 22 7月, 2011 1 次提交
    • M
      net: filter: BPF 'JIT' compiler for PPC64 · 0ca87f05
      Matt Evans 提交于
      An implementation of a code generator for BPF programs to speed up packet
      filtering on PPC64, inspired by Eric Dumazet's x86-64 version.
      
      Filter code is generated as an ABI-compliant function in module_alloc()'d mem
      with stackframe & prologue/epilogue generated if required (simple filters don't
      need anything more than an li/blr).  The filter's local variables, M[], live in
      registers.  Supports all BPF opcodes, although "complicated" loads from negative
      packet offsets (e.g. SKF_LL_OFF) are not yet supported.
      
      There are a couple of further optimisations left for future work; many-pass
      assembly with branch-reach reduction and a register allocator to push M[]
      variables into volatile registers would improve the code quality further.
      
      This currently supports big-endian 64-bit PowerPC only (but is fairly simple
      to port to PPC32 or LE!).
      
      Enabled in the same way as x86-64:
      
      	echo 1 > /proc/sys/net/core/bpf_jit_enable
      
      Or, enabled with extra debug output:
      
      	echo 2 > /proc/sys/net/core/bpf_jit_enable
      Signed-off-by: NMatt Evans <matt@ozlabs.org>
      Acked-by: NEric Dumazet <eric.dumazet@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0ca87f05
  2. 15 7月, 2011 1 次提交
  3. 12 7月, 2011 2 次提交
  4. 11 7月, 2011 4 次提交
  5. 08 7月, 2011 5 次提交
  6. 07 7月, 2011 7 次提交
  7. 06 7月, 2011 13 次提交
  8. 05 7月, 2011 2 次提交
  9. 04 7月, 2011 2 次提交
  10. 01 7月, 2011 1 次提交
    • T
      x86-32, NUMA: Fix boot regression caused by NUMA init unification on highmem machines · a26474e8
      Tejun Heo 提交于
      During 32/64 NUMA init unification, commit 797390d8 ("x86-32,
      NUMA: use sparse_memory_present_with_active_regions()") made
      32bit mm init call memory_present() automatically from
      active_regions instead of leaving it to each NUMA init path.
      
      This commit description is inaccurate - memory_present() calls
      aren't the same for flat and numaq.  After the commit,
      memory_present() is only called for the intersection of e820 and
      NUMA layout.  Before, on flatmem, memory_present() would be
      called from 0 to max_pfn.  After, it would be called only on the
      areas that e820 indicates to be populated.
      
      This is how x86_64 works and should be okay as memmap is allowed
      to contain holes; however, x86_32 DISCONTIGMEM is missing
      early_pfn_valid(), which makes memmap_init_zone() assume that
      memmap doesn't contain any hole.  This leads to the following
      oops if e820 map contains holes as it often does on machine with
      near or more 4GiB of memory by calling pfn_to_page() on a pfn
      which isn't mapped to a NUMA node, a reported by Conny Seidel:
      
        BUG: unable to handle kernel paging request at 000012b0
        IP: [<c1aa13ce>] memmap_init_zone+0x6c/0xf2
        *pdpt =3D 0000000000000000 *pde =3D f000eef3f000ee00
        Oops: 0000 [#1] SMP
        last sysfs file:
        Modules linked in:
      
        Pid: 0, comm: swapper Not tainted 2.6.39-rc5-00164-g797390d8 #1 To Be Filled By O.E.M. To Be Filled By O.E.M./E350M1
        EIP: 0060:[<c1aa13ce>] EFLAGS: 00010012 CPU: 0
        EIP is at memmap_init_zone+0x6c/0xf2
        EAX: 00000000 EBX: 000a8000 ECX: 000a7fff EDX: f2c00b80
        ESI: 000a8000 EDI: f2c00800 EBP: c19ffe54 ESP: c19ffe34
         DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068
        Process swapper (pid: 0, ti=3Dc19fe000 task=3Dc1a07f60 task.ti=3Dc19fe000)
        Stack:
         00000002 00000000 0023f000 00000000 10000000 00000a00 f2c00000 f2c00b58
         c19ffeb0 c1a80f24 000375fe 00000000 f2c00800 00000800 00000100 00000030
         c1abb768 0000003c 00000000 00000000 00000004 00207a02 f2c00800 000375fe
        Call Trace:
         [<c1a80f24>] free_area_init_node+0x358/0x385
         [<c1a81384>] free_area_init_nodes+0x420/0x487
         [<c1a79326>] paging_init+0x114/0x11b
         [<c1a6cb13>] setup_arch+0xb37/0xc0a
         [<c1a69554>] start_kernel+0x76/0x316
         [<c1a690a8>] i386_start_kernel+0xa8/0xb0
      
      This patch fixes the bug by defining early_pfn_valid() to be the
      same as pfn_valid() when DISCONTIGMEM.
      Reported-bisected-and-tested-by: NConny Seidel <conny.seidel@amd.com>
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Cc: hans.rosenfeld@amd.com
      Cc: Christoph Lameter <cl@linux.com>
      Cc: Conny Seidel <conny.seidel@amd.com>
      Link: http://lkml.kernel.org/r/20110628094107.GB3386@htj.dyndns.orgSigned-off-by: NIngo Molnar <mingo@elte.hu>
      a26474e8
  11. 30 6月, 2011 2 次提交
    • K
      xen/pci: Use the INT_SRC_OVR IRQ (instead of GSI) to preset the ACPI SCI IRQ. · 155a16f2
      Konrad Rzeszutek Wilk 提交于
      In the past we would use the GSI value to preset the ACPI SCI
      IRQ which worked great as GSI == IRQ:
      
      ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 low level)
      
      While that is most often seen, there are some oddities:
      
      ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 20 low level)
      
      which means that GSI 20 (or pin 20) is to be overriden for IRQ 9.
      Our code that presets the interrupt for ACPI SCI however would
      use the GSI 20 instead of IRQ 9 ending up with:
      
      xen: sci override: global_irq=20 trigger=0 polarity=1
      xen: registering gsi 20 triggering 0 polarity 1
      xen: --> pirq=20 -> irq=20
      xen: acpi sci 20
      .. snip..
      calling  acpi_init+0x0/0xbc @ 1
      ACPI: SCI (IRQ9) allocation failed
      ACPI Exception: AE_NOT_ACQUIRED, Unable to install System Control Interrupt handler (20110413/evevent-119)
      ACPI: Unable to start the ACPI Interpreter
      
      as the ACPI interpreter made a call to 'acpi_gsi_to_irq' which got nine.
      It used that value to request an IRQ (request_irq) and since that was not
      present it failed.
      
      The fix is to recognize that for interrupts that are overriden (in our
      case we only care about the ACPI SCI) we should use the IRQ number
      to present the IRQ instead of the using GSI. End result is that we get:
      
      xen: sci override: global_irq=20 trigger=0 polarity=1
      xen: registering gsi 20 triggering 0 polarity 1
      xen: --> pirq=20 -> irq=9 (gsi=9)
      xen: acpi sci 9
      
      which fixes the ACPI interpreter failing on startup.
      
      CC: stable@kernel.org
      Reported-by: NLiwei <xieliwei@gmail.com>
      Tested-by: NLiwei <xieliwei@gmail.com>
      [http://lists.xensource.com/archives/html/xen-devel/2011-06/msg01727.html]
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      155a16f2
    • K
      xen/mmu: Fix for linker errors when CONFIG_SMP is not defined. · 32dd1194
      Konrad Rzeszutek Wilk 提交于
      Simple enough - we use an extern defined symbol which is not
      defined when CONFIG_SMP is not defined. This fixes the linker
      dying.
      
      CC: stable@kernel.org
      Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      32dd1194