From: Andrew Murray <amurray@thegoodpenguin.co.uk>
To: Boqun Feng <boqun.feng@gmail.com>
Cc: linux-pci@vger.kernel.org, linux-hyperv@vger.kernel.org,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
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>,
x86@kernel.org, Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
Andrew Murray <andrew.murray@arm.com>,
Bjorn Helgaas <bhelgaas@google.com>
Subject: Re: [PATCH v2 2/3] PCI: hv: Move retarget related structures into tlfs header
Date: Mon, 3 Feb 2020 09:41:18 +0000 [thread overview]
Message-ID: <20200203094118.GD20189@big-machine> (raw)
In-Reply-To: <20200203050313.69247-3-boqun.feng@gmail.com>
On Mon, Feb 03, 2020 at 01:03:12PM +0800, Boqun Feng wrote:
> Currently, retarget_msi_interrupt and other structures it relys on are
> defined in pci-hyperv.c. However, those structures are actually defined
> in Hypervisor Top-Level Functional Specification [1] and may be
> different in sizes of fields or layout from architecture to
> architecture. Therefore, this patch moves those definitions into x86's
Nit: Rather than 'Therefore, this patch moves ...' - how about 'Let's move
...'?
> tlfs header file to support virtual PCI on non-x86 architectures in the
> future.
>
> Besides, while I'm at it, rename retarget_msi_interrupt to
Nit: 'Besides, while I'm at it' - this type of wording describes what
*you've* done rather than what the patch is doing. You could replace
that quoted text with 'Additionally, '
> hv_retarget_msi_interrupt for the consistent name convention, also
Nit: s/name/naming
> mirroring the name in TLFS.
>
> [1]: https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/reference/tlfs
>
> Signed-off-by: Boqun Feng (Microsoft) <boqun.feng@gmail.com>
> ---
> arch/x86/include/asm/hyperv-tlfs.h | 31 ++++++++++++++++++++++++++
> drivers/pci/controller/pci-hyperv.c | 34 ++---------------------------
> 2 files changed, 33 insertions(+), 32 deletions(-)
>
> diff --git a/arch/x86/include/asm/hyperv-tlfs.h b/arch/x86/include/asm/hyperv-tlfs.h
> index 739bd89226a5..4a76e442481a 100644
> --- a/arch/x86/include/asm/hyperv-tlfs.h
> +++ b/arch/x86/include/asm/hyperv-tlfs.h
> @@ -911,4 +911,35 @@ struct hv_tlb_flush_ex {
> struct hv_partition_assist_pg {
> u32 tlb_lock_count;
> };
> +
> +struct hv_interrupt_entry {
> + u32 source; /* 1 for MSI(-X) */
> + u32 reserved1;
> + u32 address;
> + u32 data;
> +} __packed;
Why have you added __packed here? There is no mention of this change in the
commit log? Is it needed?
> +
> +/*
> + * 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;
> + };
> +} __packed;
Same here.
> +
> +/* HvRetargetDeviceInterrupt hypercall */
> +struct hv_retarget_device_interrupt {
> + u64 partition_id;
Why drop the 'self' comment?
> + u64 device_id;
> + struct hv_interrupt_entry int_entry;
> + u64 reserved2;
> + struct hv_device_interrupt_target int_target;
> +} __packed __aligned(8);
> #endif
> diff --git a/drivers/pci/controller/pci-hyperv.c b/drivers/pci/controller/pci-hyperv.c
> index aacfcc90d929..0d9b74503577 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;
pci-hyperv.c also makes use of retarget_msi_interrupt_lock - it's really clear
from this name what it protects, however your rename now makes this more
confusing.
Likewise there is a comment in hv_pci_probe that refers to
retarget_msi_interrupt_params which is now stale.
It may be helpful to rename hv_retarget_device_interrupt for consistency with
the docs - however please make sure you catch all the references - I'd suggest
that the move and the rename are in different patches.
Thanks,
Andrew Murray
> struct hv_pcibus_device *hbus;
> struct cpumask *dest;
> cpumask_var_t tmp;
> --
> 2.24.1
>
WARNING: multiple messages have this Message-ID (diff)
From: Andrew Murray <amurray@thegoodpenguin.co.uk>
To: Boqun Feng <boqun.feng@gmail.com>
Cc: Sasha Levin <sashal@kernel.org>,
linux-hyperv@vger.kernel.org,
Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
Stephen Hemminger <sthemmin@microsoft.com>,
linux-pci@vger.kernel.org, Haiyang Zhang <haiyangz@microsoft.com>,
x86@kernel.org, linux-kernel@vger.kernel.org,
Michael Kelley <mikelley@microsoft.com>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
"H. Peter Anvin" <hpa@zytor.com>,
Bjorn Helgaas <bhelgaas@google.com>,
Andrew Murray <andrew.murray@arm.com>,
Thomas Gleixner <tglx@linutronix.de>,
"K. Y. Srinivasan" <kys@microsoft.com>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v2 2/3] PCI: hv: Move retarget related structures into tlfs header
Date: Mon, 3 Feb 2020 09:41:18 +0000 [thread overview]
Message-ID: <20200203094118.GD20189@big-machine> (raw)
In-Reply-To: <20200203050313.69247-3-boqun.feng@gmail.com>
On Mon, Feb 03, 2020 at 01:03:12PM +0800, Boqun Feng wrote:
> Currently, retarget_msi_interrupt and other structures it relys on are
> defined in pci-hyperv.c. However, those structures are actually defined
> in Hypervisor Top-Level Functional Specification [1] and may be
> different in sizes of fields or layout from architecture to
> architecture. Therefore, this patch moves those definitions into x86's
Nit: Rather than 'Therefore, this patch moves ...' - how about 'Let's move
...'?
> tlfs header file to support virtual PCI on non-x86 architectures in the
> future.
>
> Besides, while I'm at it, rename retarget_msi_interrupt to
Nit: 'Besides, while I'm at it' - this type of wording describes what
*you've* done rather than what the patch is doing. You could replace
that quoted text with 'Additionally, '
> hv_retarget_msi_interrupt for the consistent name convention, also
Nit: s/name/naming
> mirroring the name in TLFS.
>
> [1]: https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/reference/tlfs
>
> Signed-off-by: Boqun Feng (Microsoft) <boqun.feng@gmail.com>
> ---
> arch/x86/include/asm/hyperv-tlfs.h | 31 ++++++++++++++++++++++++++
> drivers/pci/controller/pci-hyperv.c | 34 ++---------------------------
> 2 files changed, 33 insertions(+), 32 deletions(-)
>
> diff --git a/arch/x86/include/asm/hyperv-tlfs.h b/arch/x86/include/asm/hyperv-tlfs.h
> index 739bd89226a5..4a76e442481a 100644
> --- a/arch/x86/include/asm/hyperv-tlfs.h
> +++ b/arch/x86/include/asm/hyperv-tlfs.h
> @@ -911,4 +911,35 @@ struct hv_tlb_flush_ex {
> struct hv_partition_assist_pg {
> u32 tlb_lock_count;
> };
> +
> +struct hv_interrupt_entry {
> + u32 source; /* 1 for MSI(-X) */
> + u32 reserved1;
> + u32 address;
> + u32 data;
> +} __packed;
Why have you added __packed here? There is no mention of this change in the
commit log? Is it needed?
> +
> +/*
> + * 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;
> + };
> +} __packed;
Same here.
> +
> +/* HvRetargetDeviceInterrupt hypercall */
> +struct hv_retarget_device_interrupt {
> + u64 partition_id;
Why drop the 'self' comment?
> + u64 device_id;
> + struct hv_interrupt_entry int_entry;
> + u64 reserved2;
> + struct hv_device_interrupt_target int_target;
> +} __packed __aligned(8);
> #endif
> diff --git a/drivers/pci/controller/pci-hyperv.c b/drivers/pci/controller/pci-hyperv.c
> index aacfcc90d929..0d9b74503577 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;
pci-hyperv.c also makes use of retarget_msi_interrupt_lock - it's really clear
from this name what it protects, however your rename now makes this more
confusing.
Likewise there is a comment in hv_pci_probe that refers to
retarget_msi_interrupt_params which is now stale.
It may be helpful to rename hv_retarget_device_interrupt for consistency with
the docs - however please make sure you catch all the references - I'd suggest
that the move and the rename are in different patches.
Thanks,
Andrew Murray
> struct hv_pcibus_device *hbus;
> struct cpumask *dest;
> cpumask_var_t tmp;
> --
> 2.24.1
>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2020-02-03 9:41 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-03 5:03 [PATCH v2 0/3] PCI: hv: Generify pci-hyperv.c Boqun Feng
2020-02-03 5:03 ` Boqun Feng
2020-02-03 5:03 ` [PATCH v2 1/3] PCI: hv: Move hypercall related definitions into tlfs header Boqun Feng
2020-02-03 5:03 ` Boqun Feng
2020-02-03 9:25 ` Andrew Murray
2020-02-03 9:25 ` Andrew Murray
2020-02-04 2:22 ` Boqun Feng
2020-02-04 2:22 ` Boqun Feng
2020-02-03 5:03 ` [PATCH v2 2/3] PCI: hv: Move retarget related structures " Boqun Feng
2020-02-03 5:03 ` Boqun Feng
2020-02-03 9:41 ` Andrew Murray [this message]
2020-02-03 9:41 ` Andrew Murray
2020-02-03 14:09 ` Boqun Feng
2020-02-03 14:09 ` Boqun Feng
2020-02-07 7:58 ` Boqun Feng
2020-02-07 7:58 ` Boqun Feng
2020-02-03 5:03 ` [PATCH v2 3/3] PCI: hv: Introduce hv_msi_entry Boqun Feng
2020-02-03 5:03 ` Boqun Feng
2020-02-03 9:51 ` Andrew Murray
2020-02-03 9:51 ` Andrew Murray
2020-02-03 14:35 ` Boqun Feng
2020-02-03 14:35 ` Boqun Feng
2020-02-03 14:41 ` Thomas Gleixner
2020-02-03 14:41 ` Thomas Gleixner
2020-02-04 2:13 ` Boqun Feng
2020-02-04 2:13 ` Boqun Feng
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=20200203094118.GD20189@big-machine \
--to=amurray@thegoodpenguin.co.uk \
--cc=andrew.murray@arm.com \
--cc=bhelgaas@google.com \
--cc=boqun.feng@gmail.com \
--cc=bp@alien8.de \
--cc=haiyangz@microsoft.com \
--cc=hpa@zytor.com \
--cc=kys@microsoft.com \
--cc=linux-arm-kernel@lists.infradead.org \
--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=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.