Re: [PATCH 10 of 12] Fix Tpm driver -- sysfs owernship changes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 2005-04-28 at 21:28 -0700, Greg KH wrote:
> On Thu, Apr 28, 2005 at 03:40:16PM -0500, Kylene Hall wrote:
> > On Wed, 27 Apr 2005, Greg KH wrote:
> > > On Wed, Apr 27, 2005 at 05:19:03PM -0500, Kylene Hall wrote:
> > > > -	device_remove_file(&pci_dev->dev, &dev_attr_pubek);
> > > > -	device_remove_file(&pci_dev->dev, &dev_attr_pcrs);
> > > > -	device_remove_file(&pci_dev->dev, &dev_attr_caps);
> > > > +	for (i = 0; i < TPM_NUM_ATTR; i++)
> > > > +		device_remove_file(&pci_dev->dev, &chip->vendor->attr[i]);
> > > 
> > > Use an attribute group, instead of this.  That will allow you to get
> > > rid of the TPM_NUM_ATTR value, and this looney macro:
> > > 
> > > > +#define TPM_DEVICE_ATTRS { \
> > > > +        __ATTR(pubek, S_IRUGO, tpm_show_pubek, NULL), \
> > > > +        __ATTR(pcrs, S_IRUGO, tpm_show_pcrs, NULL), \
> > > > +        __ATTR(caps, S_IRUGO, tpm_show_caps, NULL), \
> > > > +        __ATTR(cancel, S_IWUSR | S_IWGRP, NULL, tpm_store_cancel) }
> > > 
> > > thanks,
> > > 
> > > greg k-h
> > > 
> > > 
> > 
> > Ok, the patch below has the same functionality as the previous patch but 
> > gets rid of the macro and implements an attribute_group.  Is there any way 
> > to avoid the repeated code in every tpm_specific file to setup the 
> > attribute_group and still ensure the files are owned by the tpm_specific 
> > module?  The only thing I can come up with is either not using the 
> > TPM_DEVICE macro at all or creating with TPM_DEVICE macro and then 
> > changing the owner field.
> 
> Why are you trying to split this driver up into such tiny pieces?
> What's wrong with one driver for all devices?

The driver was orginally all one piece and was split at the suggestion
of Ian Campbell on this list.

<snip>

On Fri, 2004-12-10 at 10:56 +0000, Ian Campbell wrote: 
> Hi, 
> 
> On Thu, 2004-12-09 at 09:25 -0600, Kylene Hall wrote:
> > +	/* Determine chip type */
> > +	if (tpm_nsc_init(chip) == 0) {
> > +		chip->recv = tpm_nsc_recv;
> > +		chip->send = tpm_nsc_send;
> > +		chip->cancel = tpm_nsc_cancel;
> > +		chip->req_complete_mask = NSC_STATUS_OBF;
> > +		chip->req_complete_val = NSC_STATUS_OBF;
> > +	} else if (tpm_atml_init(chip) == 0) {
> > +		chip->recv = tpm_atml_recv;
> > +		chip->send = tpm_atml_send;
> > +		chip->cancel = tpm_atml_cancel;
> > +		chip->req_complete_mask =
> > +		    ATML_STATUS_BUSY | ATML_STATUS_DATA_AVAIL;
> > +		chip->req_complete_val = ATML_STATUS_DATA_AVAIL;
> > +	} else {
> > +		rc = -ENODEV;
> > +		goto out_release;
> > +	}
> 
> The atmel part at least also comes as an I2C variant. 
> 
> We could continue to add to the ifelse here but perhaps it might be
> beneficial to split the individual chip specific stuff into separate
> files now and perhaps register them via some sort of
> register_tpm_hardware(struct tpm_chip_ops *) type interface?
> 
> Ian.
> 

<snip>

TPM vendor specific code can better determine whether the chip belongs
to them or not.  Since the pci_probe process takes care of checking the
possible drivers to claim a device it was decided to split the logic up.
Here is a link to the thread:
http://www.ussg.iu.edu/hypermail/linux/kernel/0412.1/0550.html


Kylie

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux