From: Boqun Feng <boqun.feng@gmail.com>
To: Vitaly Kuznetsov <vkuznets@redhat.com>
Cc: Michael Kelley <mikelley@microsoft.com>,
"K. Y. Srinivasan" <kys@microsoft.com>,
Haiyang Zhang <haiyangz@microsoft.com>,
Stephen Hemminger <sthemmin@microsoft.com>,
Sasha Levin <sashal@kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
"H. Peter Anvin" <hpa@zytor.com>,
"maintainer:X86 ARCHITECTURE (32-BIT AND 64-BIT)"
<x86@kernel.org>, Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
Andrew Murray <andrew.murray@arm.com>,
Bjorn Helgaas <bhelgaas@google.com>,
"open list:PCI NATIVE HOST BRIDGE AND ENDPOINT DRIVERS"
<linux-pci@vger.kernel.org>,
linux-hyperv@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/2] pci: hyperv: Move retarget related struct definitions into tlfs
Date: Thu, 23 Jan 2020 18:40:07 +0800 [thread overview]
Message-ID: <20200123104007.GB55410@debian-boqun.qqnc3lrjykvubdpftowmye0fmh.lx.internal.cloudapp.net> (raw)
In-Reply-To: <87blqxf9es.fsf@vitty.brq.redhat.com>
On Tue, Jan 21, 2020 at 10:25:47AM +0100, Vitaly Kuznetsov wrote:
[...]
> >
> > +#if IS_ENABLED(CONFIG_PCI_HYPERV)
> > +#define hv_set_msi_address_from_desc(msi_entry, msi_desc) \
> > +do { \
> > + (msi_entry)->address = (msi_desc)->msg.address_lo; \
> > +} while (0)
> > +
> > +#endif /* CONFIG_PCI_HYPERV */
>
> It seems to be pointless to put defines under #if IS_ENABLED(): in case
> it is not enabled and used you'll get a compilation error, in case it is
> enabled and not used no code is going to be generated anyways.
>
OK I will remove the #if IS_ENABLED() in the next version.
> > +
> > #else /* CONFIG_HYPERV */
> > static inline void hyperv_init(void) {}
> > static inline void hyperv_setup_mmu_ops(void) {}
> > diff --git a/drivers/pci/controller/pci-hyperv.c b/drivers/pci/controller/pci-hyperv.c
> > index aacfcc90d929..2240f2b3643e 100644
> > --- a/drivers/pci/controller/pci-hyperv.c
> > +++ b/drivers/pci/controller/pci-hyperv.c
> > @@ -406,36 +406,6 @@ struct pci_eject_response {
> >
> > static int pci_ring_size = (4 * PAGE_SIZE);
> >
> > -struct hv_interrupt_entry {
> > - u32 source; /* 1 for MSI(-X) */
> > - u32 reserved1;
> > - u32 address;
> > - u32 data;
> > -};
> > -
> > -/*
> > - * flags for hv_device_interrupt_target.flags
> > - */
> > -#define HV_DEVICE_INTERRUPT_TARGET_MULTICAST 1
> > -#define HV_DEVICE_INTERRUPT_TARGET_PROCESSOR_SET 2
> > -
> > -struct hv_device_interrupt_target {
> > - u32 vector;
> > - u32 flags;
> > - union {
> > - u64 vp_mask;
> > - struct hv_vpset vp_set;
> > - };
> > -};
> > -
> > -struct retarget_msi_interrupt {
> > - u64 partition_id; /* use "self" */
> > - u64 device_id;
> > - struct hv_interrupt_entry int_entry;
> > - u64 reserved2;
> > - struct hv_device_interrupt_target int_target;
> > -} __packed __aligned(8);
> > -
> > /*
> > * Driver specific state.
> > */
> > @@ -482,7 +452,7 @@ struct hv_pcibus_device {
> > struct workqueue_struct *wq;
> >
> > /* hypercall arg, must not cross page boundary */
> > - struct retarget_msi_interrupt retarget_msi_interrupt_params;
> > + struct hv_retarget_device_interrupt retarget_msi_interrupt_params;
> >
> > /*
> > * Don't put anything here: retarget_msi_interrupt_params must be last
> > @@ -1178,7 +1148,7 @@ static void hv_irq_unmask(struct irq_data *data)
> > {
> > struct msi_desc *msi_desc = irq_data_get_msi_desc(data);
> > struct irq_cfg *cfg = irqd_cfg(data);
> > - struct retarget_msi_interrupt *params;
> > + struct hv_retarget_device_interrupt *params;
> > struct hv_pcibus_device *hbus;
> > struct cpumask *dest;
> > cpumask_var_t tmp;
> > @@ -1200,8 +1170,8 @@ static void hv_irq_unmask(struct irq_data *data)
> > memset(params, 0, sizeof(*params));
> > params->partition_id = HV_PARTITION_ID_SELF;
> > params->int_entry.source = 1; /* MSI(-X) */
> > - params->int_entry.address = msi_desc->msg.address_lo;
> > - params->int_entry.data = msi_desc->msg.data;
> > + hv_set_msi_address_from_desc(¶ms->int_entry.msi_entry, msi_desc);
>
> I don't quite see why this hv_set_msi_address_from_desc() is needed at
> all.
>
I will add some description in the next version, the reason that
hv_set_msi_address_from_desc() is arm64 and x86 have different
hv_interrupt_entry formats. So a generic interface is needed so that
archs can have different ways to set ->address field from msi_desc.
Regards,
Boqun
> > + params->int_entry.msi_entry.data = msi_desc->msg.data;
> > params->device_id = (hbus->hdev->dev_instance.b[5] << 24) |
> > (hbus->hdev->dev_instance.b[4] << 16) |
> > (hbus->hdev->dev_instance.b[7] << 8) |
>
> --
> Vitaly
>
next prev parent reply other threads:[~2020-01-23 10:40 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-21 1:57 [PATCH 1/2] pci: hyperv: x86: Move hypercall related definitions into tlfs header Boqun Feng
2020-01-21 1:57 ` [PATCH 2/2] pci: hyperv: Move retarget related struct definitions into tlfs Boqun Feng
2020-01-21 9:25 ` Vitaly Kuznetsov
2020-01-23 10:40 ` Boqun Feng [this message]
2020-01-21 14:37 ` Bjorn Helgaas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200123104007.GB55410@debian-boqun.qqnc3lrjykvubdpftowmye0fmh.lx.internal.cloudapp.net \
--to=boqun.feng@gmail.com \
--cc=andrew.murray@arm.com \
--cc=bhelgaas@google.com \
--cc=bp@alien8.de \
--cc=haiyangz@microsoft.com \
--cc=hpa@zytor.com \
--cc=kys@microsoft.com \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=mikelley@microsoft.com \
--cc=mingo@redhat.com \
--cc=sashal@kernel.org \
--cc=sthemmin@microsoft.com \
--cc=tglx@linutronix.de \
--cc=vkuznets@redhat.com \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.