Message ID | 20181203023728.26774-1-yan.y.zhao@intel.com |
---|---|
State | New |
Headers | show |
Series | xen/pt: Fix a xen passthrough failure | expand |
Hi, This series seems to have some coding style problems. See output below for more information: Message-id: 20181203023728.26774-1-yan.y.zhao@intel.com Type: series Subject: [Qemu-devel] [PATCH] xen/pt: Fix a xen passthrough failure === TEST SCRIPT BEGIN === #!/bin/bash BASE=base n=1 total=$(git log --oneline $BASE.. | wc -l) failed=0 git config --local diff.renamelimit 0 git config --local diff.renames True git config --local diff.algorithm histogram commits="$(git log --format=%H --reverse $BASE..)" for c in $commits; do echo "Checking PATCH $n/$total: $(git log -n 1 --format=%s $c)..." if ! git show $c --format=email | ./scripts/checkpatch.pl --mailback -; then failed=1 echo fi n=$((n+1)) done exit $failed === TEST SCRIPT END === Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384 Switched to a new branch 'test' c561490 xen/pt: Fix a xen passthrough failure === OUTPUT BEGIN === Checking PATCH 1/1: xen/pt: Fix a xen passthrough failure... ERROR: space required before the open parenthesis '(' #27: FILE: hw/xen/xen_pt.c:850: + if(machine_irq == 0) { WARNING: line over 80 characters #47: FILE: hw/xen/xen_pt_config_init.c:306: + XEN_PT_LOG(&s->dev, "machine irq is 0, init guest PCI_INTERRUPT_PIN to 0\n"); total: 1 errors, 1 warnings, 24 lines checked Your patch has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. === OUTPUT END === Test command exited with code: 1 --- Email generated automatically by Patchew [http://patchew.org/]. Please send your feedback to patchew-devel@redhat.com
diff --git a/hw/xen/xen_pt.c b/hw/xen/xen_pt.c index f1f3a3727c..de63cb8e94 100644 --- a/hw/xen/xen_pt.c +++ b/hw/xen/xen_pt.c @@ -847,6 +847,11 @@ static void xen_pt_realize(PCIDevice *d, Error **errp) } machine_irq = s->real_device.irq; + if(machine_irq == 0) { + XEN_PT_LOG(d, "machine irq is 0\n"); + goto out; + } + rc = xc_physdev_map_pirq(xen_xc, xen_domid, machine_irq, &pirq); if (rc < 0) { error_setg_errno(errp, errno, "Mapping machine irq %u to" diff --git a/hw/xen/xen_pt_config_init.c b/hw/xen/xen_pt_config_init.c index 47f9010c75..8baddbed90 100644 --- a/hw/xen/xen_pt_config_init.c +++ b/hw/xen/xen_pt_config_init.c @@ -300,7 +300,12 @@ static int xen_pt_irqpin_reg_init(XenPCIPassthroughState *s, XenPTRegInfo *reg, uint32_t real_offset, uint32_t *data) { - *data = xen_pt_pci_read_intx(s); + if (s->real_device.irq) + *data = xen_pt_pci_read_intx(s); + else { + XEN_PT_LOG(&s->dev, "machine irq is 0, init guest PCI_INTERRUPT_PIN to 0\n"); + *data = 0; + } return 0; }
For some pci device, even its PCI_INTERRUPT_PIN is not 0, it actually doesn't support INTx mode, so its machine irq read from host sysfs is 0. In that case, report PCI_INTERRUPT_PIN as 0 to guest and let passthrough continue. Cc: Roger Pau Monné <roger.pau@citrix.com> Cc: Jan Beulich <JBeulich@suse.com> Signed-off-by: Zhao Yan <yan.y.zhao@intel.com> --- hw/xen/xen_pt.c | 5 +++++ hw/xen/xen_pt_config_init.c | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-)