04 Aug, 2016

1 commit

  • The dma-mapping core and the implementations do not change the DMA
    attributes passed by pointer. Thus the pointer can point to const data.
    However the attributes do not have to be a bitfield. Instead unsigned
    long will do fine:

    1. This is just simpler. Both in terms of reading the code and setting
    attributes. Instead of initializing local attributes on the stack
    and passing pointer to it to dma_set_attr(), just set the bits.

    2. It brings safeness and checking for const correctness because the
    attributes are passed by value.

    Semantic patches for this change (at least most of them):

    virtual patch
    virtual context

    @r@
    identifier f, attrs;

    @@
    f(...,
    - struct dma_attrs *attrs
    + unsigned long attrs
    , ...)
    {
    ...
    }

    @@
    identifier r.f;
    @@
    f(...,
    - NULL
    + 0
    )

    and

    // Options: --all-includes
    virtual patch
    virtual context

    @r@
    identifier f, attrs;
    type t;

    @@
    t f(..., struct dma_attrs *attrs);

    @@
    identifier r.f;
    @@
    f(...,
    - NULL
    + 0
    )

    Link: http://lkml.kernel.org/r/1468399300-5399-2-git-send-email-k.kozlowski@samsung.com
    Signed-off-by: Krzysztof Kozlowski
    Acked-by: Vineet Gupta
    Acked-by: Robin Murphy
    Acked-by: Hans-Christian Noren Egtvedt
    Acked-by: Mark Salter [c6x]
    Acked-by: Jesper Nilsson [cris]
    Acked-by: Daniel Vetter [drm]
    Reviewed-by: Bart Van Assche
    Acked-by: Joerg Roedel [iommu]
    Acked-by: Fabien Dessenne [bdisp]
    Reviewed-by: Marek Szyprowski [vb2-core]
    Acked-by: David Vrabel [xen]
    Acked-by: Konrad Rzeszutek Wilk [xen swiotlb]
    Acked-by: Joerg Roedel [iommu]
    Acked-by: Richard Kuo [hexagon]
    Acked-by: Geert Uytterhoeven [m68k]
    Acked-by: Gerald Schaefer [s390]
    Acked-by: Bjorn Andersson
    Acked-by: Hans-Christian Noren Egtvedt [avr32]
    Acked-by: Vineet Gupta [arc]
    Acked-by: Robin Murphy [arm64 and dma-iommu]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Krzysztof Kozlowski
     

28 Jul, 2016

1 commit

  • Pull xen updates from David Vrabel:
    "Features and fixes for 4.8-rc0:

    - ACPI support for guests on ARM platforms.
    - Generic steal time support for arm and x86.
    - Support cases where kernel cpu is not Xen VCPU number (e.g., if
    in-guest kexec is used).
    - Use the system workqueue instead of a custom workqueue in various
    places"

    * tag 'for-linus-4.8-rc0-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip: (47 commits)
    xen: add static initialization of steal_clock op to xen_time_ops
    xen/pvhvm: run xen_vcpu_setup() for the boot CPU
    xen/evtchn: use xen_vcpu_id mapping
    xen/events: fifo: use xen_vcpu_id mapping
    xen/events: use xen_vcpu_id mapping in events_base
    x86/xen: use xen_vcpu_id mapping when pointing vcpu_info to shared_info
    x86/xen: use xen_vcpu_id mapping for HYPERVISOR_vcpu_op
    xen: introduce xen_vcpu_id mapping
    x86/acpi: store ACPI ids from MADT for future usage
    x86/xen: update cpuid.h from Xen-4.7
    xen/evtchn: add IOCTL_EVTCHN_RESTRICT
    xen-blkback: really don't leak mode property
    xen-blkback: constify instance of "struct attribute_group"
    xen-blkfront: prefer xenbus_scanf() over xenbus_gather()
    xen-blkback: prefer xenbus_scanf() over xenbus_gather()
    xen: support runqueue steal time on xen
    arm/xen: add support for vm_assist hypercall
    xen: update xen headers
    xen-pciback: drop superfluous variables
    xen-pciback: short-circuit read path used for merging write values
    ...

    Linus Torvalds
     

27 Jul, 2016

1 commit

  • I have noticed that frontswap.h first declares "frontswap_enabled" as
    extern bool variable, and then overrides it with "#define
    frontswap_enabled (1)" for CONFIG_FRONTSWAP=Y or (0) when disabled. The
    bool variable isn't actually instantiated anywhere.

    This all looks like an unfinished attempt to make frontswap_enabled
    reflect whether a backend is instantiated. But in the current state,
    all frontswap hooks call unconditionally into frontswap.c just to check
    if frontswap_ops is non-NULL. This should at least be checked inline,
    but we can further eliminate the overhead when CONFIG_FRONTSWAP is
    enabled and no backend registered, using a static key that is initially
    disabled, and gets enabled only upon first backend registration.

    Thus, checks for "frontswap_enabled" are replaced with
    "frontswap_enabled()" wrapping the static key check. There are two
    exceptions:

    - xen's selfballoon_process() was testing frontswap_enabled in code guarded
    by #ifdef CONFIG_FRONTSWAP, which was effectively always true when reachable.
    The patch just removes this check. Using frontswap_enabled() does not sound
    correct here, as this can be true even without xen's own backend being
    registered.

    - in SYSCALL_DEFINE2(swapon), change the check to IS_ENABLED(CONFIG_FRONTSWAP)
    as it seems the bitmap allocation cannot currently be postponed until a
    backend is registered. This means that frontswap will still have some
    memory overhead by being configured, but without a backend.

    After the patch, we can expect that some functions in frontswap.c are
    called only when frontswap_ops is non-NULL. Change the checks there to
    VM_BUG_ONs. While at it, convert other BUG_ONs to VM_BUG_ONs as
    frontswap has been stable for some time.

    [akpm@linux-foundation.org: coding-style fixes]
    Link: http://lkml.kernel.org/r/1463152235-9717-1-git-send-email-vbabka@suse.cz
    Signed-off-by: Vlastimil Babka
    Cc: Konrad Rzeszutek Wilk
    Cc: Boris Ostrovsky
    Cc: David Vrabel
    Cc: Juergen Gross
    Cc: "Kirill A. Shutemov"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vlastimil Babka
     

26 Jul, 2016

1 commit


25 Jul, 2016

5 commits

  • Use the newly introduced xen_vcpu_id mapping to get Xen's idea of vCPU
    id for CPU0.

    Signed-off-by: Vitaly Kuznetsov
    Signed-off-by: David Vrabel

    Vitaly Kuznetsov
     
  • EVTCHNOP_init_control has vCPU id as a parameter and Xen's idea of
    vCPU id should be used. Use the newly introduced xen_vcpu_id mapping
    to convert it from Linux's id.

    Signed-off-by: Vitaly Kuznetsov
    Signed-off-by: David Vrabel

    Vitaly Kuznetsov
     
  • EVTCHNOP_bind_ipi and EVTCHNOP_bind_virq pass vCPU id as a parameter
    and Xen's idea of vCPU id should be used. Use the newly introduced
    xen_vcpu_id mapping to convert it from Linux's id.

    Signed-off-by: Vitaly Kuznetsov
    Signed-off-by: David Vrabel

    Vitaly Kuznetsov
     
  • HYPERVISOR_vcpu_op() passes Linux's idea of vCPU id as a parameter
    while Xen's idea is expected. In some cases these ideas diverge so we
    need to do remapping.

    Convert all callers of HYPERVISOR_vcpu_op() to use xen_vcpu_nr().

    Leave xen_fill_possible_map() and xen_filter_cpu_maps() intact as
    they're only being called by PV guests before perpu areas are
    initialized. While the issue could be solved by switching to
    early_percpu for xen_vcpu_id I think it's not worth it: PV guests will
    probably never get to the point where their idea of vCPU id diverges
    from Xen's.

    Signed-off-by: Vitaly Kuznetsov
    Signed-off-by: David Vrabel

    Vitaly Kuznetsov
     
  • IOCTL_EVTCHN_RESTRICT limits the file descriptor to being able to bind
    to interdomain event channels from a specific domain. Event channels
    that are already bound continue to work for sending and receiving
    notifications.

    This is useful as part of deprivileging a user space PV backend or
    device model (QEMU). e.g., Once the device model as bound to the
    ioreq server event channels it can restrict the file handle so an
    exploited DM cannot use it to create or bind to arbitrary event
    channels.

    Signed-off-by: David Vrabel
    Reviewed-by: Boris Ostrovsky

    David Vrabel
     

08 Jul, 2016

3 commits

  • As of Xen 4.7 PV CPUID doesn't expose either of CPUID[1].ECX[7] and
    CPUID[0x80000007].EDX[7] anymore, causing the driver to fail to load on
    both Intel and AMD systems. Doing any kind of hardware capability
    checks in the driver as a prerequisite was wrong anyway: With the
    hypervisor being in charge, all such checking should be done by it. If
    ACPI data gets uploaded despite some missing capability, the hypervisor
    is free to ignore part or all of that data.

    Ditch the entire check_prereq() function, and do the only valid check
    (xen_initial_domain()) in the caller in its place.

    Signed-off-by: Jan Beulich
    Cc:
    Signed-off-by: David Vrabel

    Jan Beulich
     
  • No need to retain a local copy of the full request message, only the
    type is really needed.

    Signed-off-by: Jan Beulich
    Signed-off-by: David Vrabel

    Jan Beulich
     
  • xenbus_dev_request_and_reply() needs to track whether a transaction is
    open. For XS_TRANSACTION_START messages it calls transaction_start()
    and for XS_TRANSACTION_END messages it calls transaction_end().

    If sending an XS_TRANSACTION_START message fails or responds with an
    an error, the transaction is not open and transaction_end() must be
    called.

    If sending an XS_TRANSACTION_END message fails, the transaction is
    still open, but if an error response is returned the transaction is
    closed.

    Commit 027bd7e89906 ("xen/xenbus: Avoid synchronous wait on XenBus
    stalling shutdown/restart") introduced a regression where failed
    XS_TRANSACTION_START messages were leaving the transaction open. This
    can cause problems with suspend (and migration) as all transactions
    must be closed before suspending.

    It appears that the problematic change was added accidentally, so just
    remove it.

    Signed-off-by: Jan Beulich
    Cc: Konrad Rzeszutek Wilk
    Cc:
    Signed-off-by: David Vrabel

    Jan Beulich
     

07 Jul, 2016

1 commit

  • Inability to locate a user mode specified transaction ID should not
    lead to a kernel crash. For other than XS_TRANSACTION_START also
    don't issue anything to xenbus if the specified ID doesn't match that
    of any active transaction.

    Signed-off-by: Jan Beulich
    Cc:
    Signed-off-by: David Vrabel

    Jan Beulich
     

06 Jul, 2016

18 commits

  • Up to now reading the stolen time of a remote cpu was not possible in a
    performant way under Xen. This made support of runqueue steal time via
    paravirt_steal_rq_enabled impossible.

    With the addition of an appropriate hypervisor interface this is now
    possible, so add the support.

    Signed-off-by: Juergen Gross
    Reviewed-by: Stefano Stabellini
    Signed-off-by: David Vrabel

    Juergen Gross
     
  • req_start is simply an alias of the "offset" function parameter, and
    req_end is being used just once in each function. (And both variables
    were loop invariant anyway, so should at least have got initialized
    outside the loop.)

    Signed-off-by: Jan Beulich
    Signed-off-by: David Vrabel

    Jan Beulich
     
  • There's no point calling xen_pcibk_config_read() here - all it'll do is
    return whatever conf_space_read() returns for the field which was found
    here (and which would be found there again). Also there's no point
    clearing tmp_val before the call.

    Signed-off-by: Jan Beulich
    Signed-off-by: David Vrabel

    Jan Beulich
     
  • Signed-off-by: Jan Beulich
    Signed-off-by: David Vrabel

    Jan Beulich
     
  • Other than for raw BAR values, flags are properly separated in the
    internal representation.

    Signed-off-by: Jan Beulich
    Signed-off-by: David Vrabel

    Jan Beulich
     
  • Signed-off-by: Jan Beulich
    Signed-off-by: David Vrabel

    Jan Beulich
     
  • It is now identical to bar_init().

    Signed-off-by: Jan Beulich
    Signed-off-by: David Vrabel

    Jan Beulich
     
  • Signed-off-by: Jan Beulich
    Signed-off-by: David Vrabel

    Jan Beulich
     
  • System workqueues have been able to handle high level of concurrency
    for a long time now and there's no reason to use dedicated workqueues
    just to gain concurrency. Replace dedicated xenbus_frontend_wq with the
    use of system_wq.

    Unlike a dedicated per-cpu workqueue created with create_workqueue(),
    system_wq allows multiple work items to overlap executions even on
    the same CPU; however, a per-cpu workqueue doesn't have any CPU
    locality or global ordering guarantees unless the target CPU is
    explicitly specified and the increase of local concurrency shouldn't
    make any difference.

    In this case, there is only a single work item, increase of concurrency
    level by switching to system_wq should not make any difference.

    Signed-off-by: Bhaktipriya Shridhar
    Acked-by: Tejun Heo
    Signed-off-by: David Vrabel

    Bhaktipriya Shridhar
     
  • System workqueues have been able to handle high level of concurrency
    for a long time now and there's no reason to use dedicated workqueues
    just to gain concurrency. Replace dedicated xen_pcibk_wq with the
    use of system_wq.

    Unlike a dedicated per-cpu workqueue created with create_workqueue(),
    system_wq allows multiple work items to overlap executions even on
    the same CPU; however, a per-cpu workqueue doesn't have any CPU
    locality or global ordering guarantees unless the target CPU is
    explicitly specified and thus the increase of local concurrency shouldn't
    make any difference.

    Since the work items could be pending, flush_work() has been used in
    xen_pcibk_disconnect(). xen_pcibk_xenbus_remove() calls free_pdev()
    which in turn calls xen_pcibk_disconnect() for every pdev to ensure that
    there is no pending task while disconnecting the driver.

    Signed-off-by: Bhaktipriya Shridhar
    Acked-by: Tejun Heo
    Signed-off-by: David Vrabel

    Bhaktipriya Shridhar
     
  • The pv_time_ops structure contains a function pointer for the
    "steal_clock" functionality used only by KVM and Xen on ARM. Xen on x86
    uses its own mechanism to account for the "stolen" time a thread wasn't
    able to run due to hypervisor scheduling.

    Add support in Xen arch independent time handling for this feature by
    moving it out of the arm arch into drivers/xen and remove the x86 Xen
    hack.

    Signed-off-by: Juergen Gross
    Reviewed-by: Boris Ostrovsky
    Reviewed-by: Stefano Stabellini
    Signed-off-by: David Vrabel

    Juergen Gross
     
  • Replace explicit computation of vma page count by a call to
    vma_pages().

    Signed-off-by: Muhammad Falak R Wani
    Reviewed-by: Boris Ostrovsky
    Signed-off-by: David Vrabel

    Muhammad Falak R Wani
     
  • When running on Xen hypervisor, runtime services are supported through
    hypercall. Add a Xen specific function to initialize runtime services.

    Signed-off-by: Shannon Zhao
    Reviewed-by: Stefano Stabellini
    Tested-by: Julien Grall
    Acked-by: Catalin Marinas

    Shannon Zhao
     
  • Move x86 specific codes to architecture directory and export those EFI
    runtime service functions. This will be useful for initializing runtime
    service on ARM later.

    Signed-off-by: Shannon Zhao
    Reviewed-by: Stefano Stabellini
    Tested-by: Julien Grall
    Signed-off-by: Stefano Stabellini

    Shannon Zhao
     
  • Add a bus_notifier for AMBA bus device in order to map the device
    mmio regions when DOM0 booting with ACPI.

    Signed-off-by: Shannon Zhao
    Reviewed-by: Stefano Stabellini
    Reviewed-by: Julien Grall
    Tested-by: Julien Grall

    Shannon Zhao
     
  • Add a bus_notifier for platform bus device in order to map the device
    mmio regions when DOM0 booting with ACPI.

    Signed-off-by: Shannon Zhao
    Acked-by: Stefano Stabellini
    Tested-by: Julien Grall

    Shannon Zhao
     
  • Make xen_xlate_map_ballooned_pages work with 64K pages. In that case
    Kernel pages are 64K in size but Xen pages remain 4K in size. Xen pfns
    refer to 4K pages.

    Signed-off-by: Shannon Zhao
    Reviewed-by: Stefano Stabellini
    Reviewed-by: Julien Grall
    Tested-by: Julien Grall

    Shannon Zhao
     
  • Move xlated_setup_gnttab_pages to common place, so it can be reused by
    ARM to setup grant table.

    Rename it to xen_xlate_map_ballooned_pages.

    Signed-off-by: Shannon Zhao
    Reviewed-by: Stefano Stabellini
    Reviewed-by: Julien Grall
    Tested-by: Julien Grall

    Shannon Zhao
     

24 Jun, 2016

1 commit

  • Reads following writes with all address bits set to 1 should return all
    changeable address bits as one, not the BAR size (nor, as was the case
    for the upper half of 64-bit BARs, the high half of the region's end
    address). Presumably this didn't cause any problems so far because
    consumers use the value to calculate the size (usually via val & -val),
    and do nothing else with it.

    But also consider the exception here: Unimplemented BARs should always
    return all zeroes.

    And finally, the check for whether to return the sizing address on read
    for the ROM BAR should ignore all non-address bits, not just the ROM
    Enable one.

    Signed-off-by: Jan Beulich
    Reviewed-by: Boris Ostrovsky
    Signed-off-by: David Vrabel

    Jan Beulich
     

23 Jun, 2016

2 commits

  • Current overlap check is evaluating to false a case where a filter
    field is fully contained (proper subset) of a r/w request. This
    change applies classical overlap check instead to include all the
    scenarios.

    More specifically, for (Hilscher GmbH CIFX 50E-DP(M/S)) device driver
    the logic is such that the entire confspace is read and written in 4
    byte chunks. In this case as an example, CACHE_LINE_SIZE,
    LATENCY_TIMER and PCI_BIST are arriving together in one call to
    xen_pcibk_config_write() with offset == 0xc and size == 4. With the
    exsisting overlap check the LATENCY_TIMER field (offset == 0xd, length
    == 1) is fully contained in the write request and hence is excluded
    from write, which is incorrect.

    Signed-off-by: Andrey Grodzovsky
    Reviewed-by: Boris Ostrovsky
    Reviewed-by: Jan Beulich
    Cc:
    Signed-off-by: David Vrabel

    Andrey Grodzovsky
     
  • Fix a declared-but-not-defined warning when building with
    XEN_BALLOON_MEMORY_HOTPLUG=n. This fixes a regression introduced by
    commit dfd74a1edfab ("xen/balloon: Fix crash when ballooning on x86 32
    bit PAE").

    Signed-off-by: Ross Lagerwall
    Acked-by: Juergen Gross
    Signed-off-by: David Vrabel

    Ross Lagerwall
     

29 May, 2016

1 commit

  • Pull SCSI target updates from Nicholas Bellinger:
    "Here are the outstanding target pending updates for v4.7-rc1.

    The highlights this round include:

    - Allow external PR/ALUA metadata path be defined at runtime via top
    level configfs attribute (Lee)
    - Fix target session shutdown bug for ib_srpt multi-channel (hch)
    - Make TFO close_session() and shutdown_session() optional (hch)
    - Drop se_sess->sess_kref + convert tcm_qla2xxx to internal kref
    (hch)
    - Add tcm_qla2xxx endpoint attribute for basic FC jammer (Laurence)
    - Refactor iscsi-target RX/TX PDU encode/decode into common code
    (Varun)
    - Extend iscsit_transport with xmit_pdu, release_cmd, get_rx_pdu,
    validate_parameters, and get_r2t_ttt for generic ISO offload
    (Varun)
    - Initial merge of cxgb iscsi-segment offload target driver (Varun)

    The bulk of the changes are Chelsio's new driver, along with a number
    of iscsi-target common code improvements made by Varun + Co along the
    way"

    * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: (29 commits)
    iscsi-target: Fix early sk_data_ready LOGIN_FLAGS_READY race
    cxgbit: Use type ISCSI_CXGBIT + cxgbit tpg_np attribute
    iscsi-target: Convert transport drivers to signal rdma_shutdown
    iscsi-target: Make iscsi_tpg_np driver show/store use generic code
    tcm_qla2xxx Add SCSI command jammer/discard capability
    iscsi-target: graceful disconnect on invalid mapping to iovec
    target: need_to_release is always false, remove redundant check and kfree
    target: remove sess_kref and ->shutdown_session
    iscsi-target: remove usage of ->shutdown_session
    tcm_qla2xxx: introduce a private sess_kref
    target: make close_session optional
    target: make ->shutdown_session optional
    target: remove acl_stop
    target: consolidate and fix session shutdown
    cxgbit: add files for cxgbit.ko
    iscsi-target: export symbols
    iscsi-target: call complete on conn_logout_comp
    iscsi-target: clear tx_thread_active
    iscsi-target: add new offload transport type
    iscsi-target: use conn_transport->transport_type in text rsp
    ...

    Linus Torvalds
     

25 May, 2016

1 commit


24 May, 2016

3 commits

  • Commit ff1e22e7a638 ("xen/events: Mask a moving irq") open-coded
    irq_move_irq() but left out checking if the IRQ is disabled. This broke
    resuming from suspend since it tries to move a (disabled) irq without
    holding the IRQ's desc->lock. Fix it by adding in a check for disabled
    IRQs.

    The resulting stacktrace was:
    kernel BUG at /build/linux-UbQGH5/linux-4.4.0/kernel/irq/migration.c:31!
    invalid opcode: 0000 [#1] SMP
    Modules linked in: xenfs xen_privcmd ...
    CPU: 0 PID: 9 Comm: migration/0 Not tainted 4.4.0-22-generic #39-Ubuntu
    Hardware name: Xen HVM domU, BIOS 4.6.1-xs125180 05/04/2016
    task: ffff88003d75ee00 ti: ffff88003d7bc000 task.ti: ffff88003d7bc000
    RIP: 0010:[] [] irq_move_masked_irq+0xd2/0xe0
    RSP: 0018:ffff88003d7bfc50 EFLAGS: 00010046
    RAX: 0000000000000000 RBX: ffff88003d40ba00 RCX: 0000000000000001
    RDX: 0000000000000001 RSI: 0000000000000100 RDI: ffff88003d40bad8
    RBP: ffff88003d7bfc68 R08: 0000000000000000 R09: ffff88003d000000
    R10: 0000000000000000 R11: 000000000000023c R12: ffff88003d40bad0
    R13: ffffffff81f3a4a0 R14: 0000000000000010 R15: 00000000ffffffff
    FS: 0000000000000000(0000) GS:ffff88003da00000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007fd4264de624 CR3: 0000000037922000 CR4: 00000000003406f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Stack:
    ffff88003d40ba38 0000000000000024 0000000000000000 ffff88003d7bfca0
    ffffffff814c8d92 00000010813ef89d 00000000805ea732 0000000000000009
    0000000000000024 ffff88003cc39b80 ffff88003d7bfce0 ffffffff814c8f66
    Call Trace:
    [] eoi_pirq+0xb2/0xf0
    [] __startup_pirq+0xe6/0x150
    [] xen_irq_resume+0x319/0x360
    [] xen_suspend+0xb5/0x180
    [] multi_cpu_stop+0xb5/0xe0
    [] ? cpu_stop_queue_work+0x80/0x80
    [] cpu_stopper_thread+0xb0/0x140
    [] ? finish_task_switch+0x76/0x220
    [] ? __raw_callee_save___pv_queued_spin_unlock+0x11/0x20
    [] smpboot_thread_fn+0x105/0x160
    [] ? sort_range+0x30/0x30
    [] kthread+0xd8/0xf0
    [] ? kthread_create_on_node+0x1e0/0x1e0
    [] ret_from_fork+0x3f/0x70
    [] ? kthread_create_on_node+0x1e0/0x1e0

    Signed-off-by: Ross Lagerwall
    Reviewed-by: Boris Ostrovsky
    Cc:
    Signed-off-by: David Vrabel

    Ross Lagerwall
     
  • The XEN UEFI code has become available on the ARM architecture
    recently, but now causes a link-time warning:

    ld: warning: drivers/xen/efi.o uses 2-byte wchar_t yet the output is to use 4-byte wchar_t; use of wchar_t values across objects may fail

    This seems harmless, because the efi code only uses 2-byte
    characters when interacting with EFI, so we don't pass on those
    strings to elsewhere in the system, and we just need to
    silence the warning.

    It is not clear to me whether we actually need to build the file
    with the -fshort-wchar flag, but if we do, then we should also
    pass --no-wchar-size-warning to the linker, to avoid the warning.

    Signed-off-by: Arnd Bergmann
    Reviewed-by: Stefano Stabellini
    Fixes: 37060935dc04 ("ARM64: XEN: Add a function to initialize Xen specific UEFI runtime services")

    Arnd Bergmann
     
  • IOCTL_GNTDEV_GRANT_COPY batches copy operations to reduce the number
    of hypercalls. The stack is used to avoid a memory allocation in a
    hot path. However, a batch size of 24 requires more than 1024 bytes of
    stack which in some configurations causes a compiler warning.

    xen/gntdev.c: In function ‘gntdev_ioctl_grant_copy’:
    xen/gntdev.c:949:1: warning: the frame size of 1248 bytes is
    larger than 1024 bytes [-Wframe-larger-than=]

    This is a harmless warning as there is still plenty of stack spare,
    but people keep trying to "fix" it. Reduce the batch size to 16 to
    reduce stack usage to less than 1024 bytes. This should have minimal
    impact on performance.

    Signed-off-by: David Vrabel

    David Vrabel
     

10 May, 2016

1 commit