linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Nguyen, Tom L" <tom.l.nguyen@intel.com>
To: "Jeff Garzik" <jgarzik@pobox.com>
Cc: "Nakajima, Jun" <jun.nakajima@intel.com>,
	<linux-kernel@vger.kernel.org>, <linux-pci@vger.kernel.org>,
	"Nguyen, Tom L" <tom.l.nguyen@intel.com>
Subject: RE: Updated MSI Patches
Date: Wed, 1 Oct 2003 11:26:37 -0700	[thread overview]
Message-ID: <C7AB9DA4D0B1F344BF2489FA165E5024015417FC@orsmsx404.jf.intel.com> (raw)

On Wednesday, October 01, 2003, Jeff Garzik wrote:
>> +Q2. Will it work on all the Pentium processors (P3, P4, Xeon,
>> +AMD processors)? In P3 IPI's are transmitted on the APIC local
>> +bus and in P4 and Xeon they are transmitted on the system
>> +bus. Are there any implications with this?
>> +
>> +A2. MSI support enables a PCI device sending an inbound
>> +memory write (0xfeexxxxx as target address) on its PCI bus
>> +directly to the FSB. Since the message address has a
>> +redirection hint bit cleared, it should work.
>> +
>> +Q3. The target address 0xfeexxxxx will be translated by the
>> +Host Bridge into an interrupt message. Are there any
>> +limitations on the chipsets such as Intel 8xx, Intel e7xxx,
>> +or VIA?
>> +
>> +A3. If these chipsets support an inbound memory write with
>> +target address set as 0xfeexxxxx, as conformed to PCI 
>> +specification 2.3 or latest, then it should work.

>I would prefer a section in the documentation that spells out, in plain 
>English, exactly what hardware support is needed for MSI to work.  i.e.

>"APIC required and must be enabled"
>"Northbridge must support MSI transactions"
>etc.

>Using that information, users and developers may know _exactly_ whether 
>they can use MSI or not.  From "Q2/A2" and "Q3/A3" above, it is not 
>clear to me.
Agree. Thanks!

>> +static struct hw_interrupt_type msix_irq_type = {
>> +	"PCI MSI-X",
>> +	startup_msi_irq_w_maskbit,
>> +	shutdown_msi_irq_w_maskbit,
>> +	enable_msi_irq_w_maskbit,
>> +	disable_msi_irq_w_maskbit,
>> +	act_msi_irq_w_maskbit,		
>> +	end_msi_irq_w_maskbit,	
>> +	set_msi_irq_affinity
>> +};
>> +
>> +/*
>> + * Interrupt Type for MSI PCI/PCI-X/PCI-Express Devices,
>> + * which implement the MSI Capability Structure with 
>> + * Mask-and-Pending Bits. 
>> + */
>> +static struct hw_interrupt_type msi_irq_w_maskbit_type = {
>> +	"PCI MSI",
>> +	startup_msi_irq_w_maskbit,
>> +	shutdown_msi_irq_w_maskbit,
>> +	enable_msi_irq_w_maskbit,
>> +	disable_msi_irq_w_maskbit,
>> +	act_msi_irq_w_maskbit,		
>> +	end_msi_irq_w_maskbit,	
>> +	set_msi_irq_affinity
>> +};
>> +
>> +/*
>> + * Interrupt Type for MSI PCI/PCI-X/PCI-Express Devices,
>> + * which implement the MSI Capability Structure without 
>> + * Mask-and-Pending Bits. 
>> + */
>> +static struct hw_interrupt_type msi_irq_wo_maskbit_type = {
>> +	"PCI MSI",
>> +	startup_msi_irq_wo_maskbit,
>> +	shutdown_msi_irq_wo_maskbit,
>> +	enable_msi_irq_wo_maskbit,
>> +	disable_msi_irq_wo_maskbit,
>> +	act_msi_irq_wo_maskbit,		
>> +	end_msi_irq_wo_maskbit,	
>> +	set_msi_irq_affinity
>> +};

>Suggest converting these structure initializers to C99 style:
>
>	.member_name		= value,

Agree. Thanks!

>> +/**
>> + * msix_capability_init: configure device's MSI-X capability structure
>> + * argument: dev of struct pci_dev type
>> + * 
>> + * description: called to configure the device's MSI-X capability structure 
>> + * with a single MSI. To request for additional MSI vectors, the device drivers
>> + * are required to utilize the following supported APIs:
>> + * 1) msi_alloc_vectors(...) for requesting one or more MSI
>> + * 2) msi_free_vectors(...) for releasing one or more MSI back to PCI subsystem
>> + *

>When added header comments, please use the official kernel style, so 
>that it may be picked up automatically by the kernel documentation 
>processing system (Documentation/DocBook/*).  Specifically,
>
>	/**
>
>begins a header (you did this),
>
>	*	my_function - description
>
>begins a function header (you need to use " - "),
>
>	*	@arg1: description...
>	*	@arg2: description...
>
>describes the arguments.

>The rest is fine.  Note that lines ending with a colon ("blah blah:\n") 
>are bolded, and considered paragraph leaders.

Agree. Thanks for this input!

>> @@ -564,6 +565,9 @@
>>  		/* Fix up broken headers */
>>  		pci_fixup_device(PCI_FIXUP_HEADER, dev);
>>  
>> +		/* Fix up broken MSI hardware */
>> +		pci_fixup_device(PCI_FIXUP_MSI, dev);
>> +
>>  		/*
>>  		 * Add the device to our list of discovered devices
>>  		 * and the bus list for fixup functions, etc.

>Why does MSI need a separate list of fixups?
You are right. Sorry, I forgot to remove these lines after testing 
first alternative "quirk" solution. Will remove these lines.

>> +struct msg_data {	
>> +	__u32	vector	:  8,		
>> +	delivery_mode	:  3,	/*	000b: FIXED
>> +			 		001b: lowest priority
>> +			 	 	111b: ExtINT */	
>> +	reserved_1	:  3,
>> +	level		:  1,	/* 0: deassert, 1: assert */	
>> +	trigger		:  1,	/* 0: edge, 1: level */	
>> +	reserved_2	: 16;
>> +} __attribute__ ((packed));
>> +
>> +struct msg_address {
>> +	union {
>> +		struct { __u32
>> +			reserved_1		:  2,		
>> +			dest_mode		:  1,	/* 0: physical, 
>> +							   1: logical */	
>> +			redirection_hint        :  1,  	/* 0: dedicated CPU 
>> +							   1: lowest priority */
>> +			reserved_2		:  8,   	
>> + 			dest_id			:  8,	/* Destination ID */	
>> +			header			: 12;	/* FEEH */
>> +      	}u;
>> +       	__u32  value;
>> +	}lo_address;
>> +	__u32 	hi_address;
>> +} __attribute__ ((packed));
>> +
>> +struct msi_desc {
>> +	struct {
>> +		__u32	type	: 5, /* {0: unused, 5h:MSI, 11h:MSI-X} 	  */
>> +			maskbit	: 1, /* mask-pending bit supported ?      */
>> +			reserved: 2, /* reserved			  */
>> +			entry_nr: 8, /* specific enabled entry 		  */
>> +			default_vector: 8, /* default pre-assigned vector */ 
>> +			current_cpu: 8; /* current destination cpu	  */
>> +	}msi_attrib;
>> +
>> +	struct {
>> +		__u32	head	: 16, 
>> +			tail	: 16; 
>> +	}link;
>> +
>> +	unsigned long mask_base;
>> +	struct pci_dev *dev;
>> +};

>These bitfields should be defined in big-endian and little-endian forms, 
>shouldn't they?  grep for __LITTLE_ENDIAN_BITFIELD and 
>__BIG_ENDIAN_BITFIELD in include/*/*.h.

Thanks for your input. We'll make change appropriately.

Thanks,
Long

             reply	other threads:[~2003-10-01 18:27 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-10-01 18:26 Nguyen, Tom L [this message]
  -- strict thread matches above, loose matches on Subject: below --
2003-10-03 22:15 Updated MSI Patches long
2003-10-01 15:37 long
2003-10-01 17:09 ` Jeff Garzik
2003-08-22 18:25 long
2003-08-19 15:42 Nguyen, Tom L
2003-08-14 23:46 Nguyen, Tom L
2003-08-13 15:19 Nguyen, Tom L
2003-08-13  4:14 Nakajima, Jun
2003-08-13  1:34 Nakajima, Jun
2003-08-13  1:37 ` Zwane Mwaikambo
2003-08-12 23:59 Nakajima, Jun
2003-08-13  0:48 ` Zwane Mwaikambo
2003-08-12 18:36 Nakajima, Jun
2003-08-12 18:48 ` Jeff Garzik
2003-08-12 19:14   ` Zwane Mwaikambo
2003-08-12 19:44     ` Jeff Garzik
2003-08-12 17:32 Nguyen, Tom L
2003-08-12 18:14 ` Zwane Mwaikambo
2003-08-12 17:04 Nguyen, Tom L
2003-08-12 18:11 ` Zwane Mwaikambo
2003-08-12 15:22 long
2003-08-11 20:51 long
2003-08-11 21:16 ` Greg KH
2003-08-12  1:41   ` Zwane Mwaikambo
2003-08-12  5:53     ` Greg KH
2003-08-08 19:33 long
2003-08-08 20:15 ` Greg KH
2003-08-08 14:41 Nguyen, Tom L
2003-08-07 23:07 Nakajima, Jun
2003-08-07 21:25 long
2003-08-07 22:14 ` Greg KH
2003-08-07 22:44 ` Jeff Garzik
2003-08-07 23:03   ` Matt Porter
2003-08-08  2:36 ` Zwane Mwaikambo

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=C7AB9DA4D0B1F344BF2489FA165E5024015417FC@orsmsx404.jf.intel.com \
    --to=tom.l.nguyen@intel.com \
    --cc=jgarzik@pobox.com \
    --cc=jun.nakajima@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).