[PATCH] spi: free children in spi_unregister_master, not siblings
introduced by 49dce689ad4ef0fd1f970ef762168e4bd46f69a3 and bad-fixed by 350d0076c5763ca2b88ca05e3889bfa7c1905f21, spi_unregister_master would previously device_unregister all of the spi master's siblings (instead of its children). hilarity ensues. fix it to unregister children. Signed-off-by: David Lamparter equi...@diac24.net Cc: Tony Jones to...@suse.de Cc: Atsushi Nemoto an...@mba.ocn.ne.jp Cc: David Brownell davi...@pacbell.net --- siblings were usb endpoint devices in my case, causing a very nice *boom* when the usb code tried to unregister them after they were gone already because of spi_unregister_master. went looking for a bug in my code for 20 hours... patch is against 2.6.35.4 but there shouldn't be much change in this file. drivers/spi/spi.c |9 +++-- 1 files changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index b3a1f92..144393c 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -546,11 +546,9 @@ done: EXPORT_SYMBOL_GPL(spi_register_master); -static int __unregister(struct device *dev, void *master_dev) +static int __unregister(struct device *dev, void *null) { - /* note: before about 2.6.14-rc1 this would corrupt memory: */ - if (dev != master_dev) - spi_unregister_device(to_spi_device(dev)); + spi_unregister_device(to_spi_device(dev)); return 0; } @@ -568,8 +566,7 @@ void spi_unregister_master(struct spi_master *master) { int dummy; - dummy = device_for_each_child(master-dev.parent, master-dev, - __unregister); + dummy = device_for_each_child(master-dev, NULL, _unregister); device_unregister(master-dev); } EXPORT_SYMBOL_GPL(spi_unregister_master); -- 1.7.1 -- Sell apps to millions through the Intel(R) Atom(Tm) Developer Program Be part of this innovative community and reach millions of netbook users worldwide. Take advantage of special opportunities to increase revenue and speed time-to-market. Join now, and jumpstart your future. http://p.sf.net/sfu/intel-atom-d2d ___ spi-devel-general mailing list spi-devel-general@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/spi-devel-general
[SPAM] Организация договорной работы в компании
Организация договорной работы на предприятии: актуальные вопросы в помощь юристу. 09-10 сентября в Москве Контактная информация: Адрес: г. Москва, м. Бауманская, ул. Бауманская, д.6, бизнес центр Виктория Плаза. Телефон: +7 /*495*/ ~ 921 ** 30 ** 17 В программе обучения: 1. Понятие договора и сделки в современном гражданском праве. - Понятие и виды сделок, правовой природы действий, не являющихся сделками. Особенности их оспаривания в арбитражном суде. - Проблемные вопросы двух- и многосторонних договорных обязательств. 2. Правовое значение документов, сопровождающих договорную работу. Правила оформления предварительных договоренностей контрагентов. - Основные различия между договором и соглашением, примеры договорных моделей, предусмотренных законодательством. - Соотношение понятий договора и контракта, отличительные особенности государственных и муниципальных контрактов по сравнению с общими положениями ГК РФ о договоре. - Соотношение понятий протокол о намерениях и предварительный договор, их основные различия. Требования законодательства к содержанию предварительного договора на примере конкретных арбитражных решений. - Пределы использования протокола разногласий для документального оформления переговоров по согласованию условий договора. Последствия подписания договора с протоколом разногласий. 3. Существенные условия договора. - Виды договорных условий, основные группы существенных условий договора, их анализ применительно к особенностям различных типам гражданско-правовых договоров. - Проблемные вопросы установления договорной цены, пределы применения принципа свободы договора при ее согласовании (обзор судебно-арбитражной практики). - Оспаривание договора по мотиву несогласования существенных условий: процессуальные особенности. Соотношение незаключенного договора и недействительного договора. 4. Возникновение договорных отношений на основе акцепта оферты. Форма договора. - Разграничение договоров на консенсуальные, реальные и требующие государственной регистрации: практические последствия их оформления. - Практические примеры действий и документов, являющихся офертой и акцептом. - Анализ документов, служащих доказательством заключения договора, и документов, не свидетельствующих о наличии договорных отношений. Заключение договора по переписке. - Письменная форма договора и правила ее соблюдения, допустимость факсимильных договоров в арбитражном споре. 5. Особенности заключения договора по результатам торгов. - Виды торгов, урегулированные законом и выработанные практикой. Их отличительные особенности и сфера практического применения. Обзор действующего законодательства, определяющего специфику торгов (рекламные, земельные, государственные, ипотечные, конкурсные, публичные торги). - Основные процедурные ошибки проведения торгов, примеры оспаривания результатов торгов, обзор судебно-арбитражной практики. - Отличительные особенности торгов при размещении государственного и муниципального заказа, анализ типичных арбитражных дел о признании торгов недействительными. 6. Заключение договора от имени организации. - Правовое значение подписи уполномоченного лица и печати организации. Сфера применения аналогов подписи в процессе оформления договорных отношений (обзор арбитражных дел). - Определение лица, уполномоченного заключать договоры от имени организации: полномочия поверенного и правила их оформления, правовой статус исполняющего обязанности. - Основные способы ограничения компетенции уполномоченного лица. Примеры типичных ошибок. - Последствия заключения договора с превышением полномочий, обзор арбитражных решений, связанных с применением ст. ст. 183, 174 ГК РФ. 7. Ответственность за нарушение условий договора. - Основные элементы состава договорного правонарушения, подлежащие доказыванию потерпевшим (истцом). Сложные вопросы доказывания причинно-следственной связи, а также размера убытков. - Проблемные моменты взыскания убытков в виде реального ущерба и упущенной выгоды (обзор судебно-арбитражной практики). - Неустойка - как наиболее распространенная штрафная санкция за нарушение договора. Виды неустойки, правила ее определения. Судебно-арбитражная практика применения ст. 333 ГК РФ о снижении размера неустойки. - Практика применения процентов за пользования чужими денежными средствами, соотношение процентов с другими мерами договорной ответственности. Стоимость участия: 17 500
Re: [PATCH] spi: free children in spi_unregister_master, not siblings
introduced by 49dce689ad4ef0fd1f970ef762168e4bd46f69a3 and bad-fixed by 350d0076c5763ca2b88ca05e3889bfa7c1905f21, spi_unregister_master would previously device_unregister all of the spi master's siblings (instead of its children). hilarity ensues. fix it to unregister children. Signed-off-by: David Lamparter equi...@diac24.net Cc: Tony Jones to...@suse.de Cc: Atsushi Nemoto an...@mba.ocn.ne.jp Cc: David Brownell dbrown...@users.sourceforge.net Cc: Grant Likely grant.lik...@secretlab.ca --- Hi Grant, please see attached patch :) (reply from David Brownell went off-list because I accidentally Cc'ed an old e-mail address of him. moving this to on-list thread.) -David L. On Mon, Aug 30, 2010 at 11:58:37AM +0200, David Lamparter wrote: siblings were usb endpoint devices in my case, causing a very nice *boom* when the usb code tried to unregister them after they were gone already because of spi_unregister_master. went looking for a bug in my code for 20 hours... patch is against 2.6.35.4 but there shouldn't be much change in this file. On Mon, Aug 30, 2010 at 10:08:12AM -0700, David Brownell wrote: Bug since 2007? OUch! At a real quick review, it looked right; but I couldn't test. Please send this patch also to Grant Likely. drivers/spi/spi.c |9 +++-- 1 files changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index b3a1f92..144393c 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -546,11 +546,9 @@ done: EXPORT_SYMBOL_GPL(spi_register_master); -static int __unregister(struct device *dev, void *master_dev) +static int __unregister(struct device *dev, void *null) { - /* note: before about 2.6.14-rc1 this would corrupt memory: */ - if (dev != master_dev) - spi_unregister_device(to_spi_device(dev)); + spi_unregister_device(to_spi_device(dev)); return 0; } @@ -568,8 +566,7 @@ void spi_unregister_master(struct spi_master *master) { int dummy; - dummy = device_for_each_child(master-dev.parent, master-dev, - __unregister); + dummy = device_for_each_child(master-dev, NULL, _unregister); device_unregister(master-dev); } EXPORT_SYMBOL_GPL(spi_unregister_master); -- 1.7.1 -- This SF.net Dev2Dev email is sponsored by: Show off your parallel programming skills. Enter the Intel(R) Threading Challenge 2010. http://p.sf.net/sfu/intel-thread-sfd ___ spi-devel-general mailing list spi-devel-general@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/spi-devel-general
Re: [PATCH] spi: free children in spi_unregister_master, not siblings
introduced by 49dce689ad4ef0fd1f970ef762168e4bd46f69a3 and bad-fixed by 350d0076c5763ca2b88ca05e3889bfa7c1905f21, spi_unregister_master would previously device_unregister all of the spi master's siblings (instead of its children). hilarity ensues. fix it to unregister children. Signed-off-by: David Lamparter equi...@diac24.net Cc: Tony Jones to...@suse.de Cc: Atsushi Nemoto an...@mba.ocn.ne.jp Cc: David Brownell dbrown...@users.sourceforge.net Cc: Grant Likely grant.lik...@secretlab.ca --- Great, I'm sending around a wrong version which doesn't even compile... + dummy = device_for_each_child(master-dev, NULL, _unregister); needs to be + dummy = device_for_each_child(master-dev, NULL, __unregister); really. Sorry, -David On Mon, Aug 30, 2010 at 11:39:49PM +0200, David Lamparter wrote: Hi Grant, please see attached patch :) (reply from David Brownell went off-list because I accidentally Cc'ed an old e-mail address of him. moving this to on-list thread.) -David L. On Mon, Aug 30, 2010 at 11:58:37AM +0200, David Lamparter wrote: siblings were usb endpoint devices in my case, causing a very nice *boom* when the usb code tried to unregister them after they were gone already because of spi_unregister_master. went looking for a bug in my code for 20 hours... patch is against 2.6.35.4 but there shouldn't be much change in this file. On Mon, Aug 30, 2010 at 10:08:12AM -0700, David Brownell wrote: Bug since 2007? OUch! At a real quick review, it looked right; but I couldn't test. Please send this patch also to Grant Likely. drivers/spi/spi.c |9 +++-- 1 files changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index b3a1f92..1a61fa8 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -546,11 +546,9 @@ done: EXPORT_SYMBOL_GPL(spi_register_master); -static int __unregister(struct device *dev, void *master_dev) +static int __unregister(struct device *dev, void *null) { - /* note: before about 2.6.14-rc1 this would corrupt memory: */ - if (dev != master_dev) - spi_unregister_device(to_spi_device(dev)); + spi_unregister_device(to_spi_device(dev)); return 0; } @@ -568,8 +566,7 @@ void spi_unregister_master(struct spi_master *master) { int dummy; - dummy = device_for_each_child(master-dev.parent, master-dev, - __unregister); + dummy = device_for_each_child(master-dev, NULL, __unregister); device_unregister(master-dev); } EXPORT_SYMBOL_GPL(spi_unregister_master); -- 1.7.1 -- This SF.net Dev2Dev email is sponsored by: Show off your parallel programming skills. Enter the Intel(R) Threading Challenge 2010. http://p.sf.net/sfu/intel-thread-sfd ___ spi-devel-general mailing list spi-devel-general@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/spi-devel-general
Re: Low SPI data throughput on Phytec 3250 board? (amba-pl022.c deployed on Phytec 3250 board.)
This post is closed. Problem is resolved by turning off SPI Debug message. In 2.6.34 Kernel config: (X:\lpc3250\ltib-qs\rpm\BUILD\linux-2.6.34\.config) Change from CONFIG_SPI_DEBUG=y to: # CONFIG_SPI_DEBUG is not set After this, in #dmesg, we won't see those spi debugging message: .. ssp-pl022 dev:ssp1: readwriter, rx: c3e0e006, rxend: c3e0e0dc, tx: 0016, txend: 00dc ssp-pl022 dev:ssp1: readwriter, rx: c3e0e01a, rxend: c3e0e0dc, tx: 002a, txend: 00dc ssp-pl022 dev:ssp1: readwriter, rx: c3e0e02e, rxend: c3e0e0dc, tx: 003e, txend: 00dc ssp-pl022 dev:ssp1: readwriter, rx: c3e0e042, rxend: c3e0e0dc, tx: 0052, txend: 00dc ssp-pl022 dev:ssp1: readwriter, rx: c3e0e056, rxend: c3e0e0dc, tx: 0066, txend: 00dc ssp-pl022 dev:ssp1: readwriter, rx: c3e0e06a, rxend: c3e0e0dc, tx: 007a, txend: 00dc ssp-pl022 dev:ssp1: readwriter, rx: c3e0e07e, rxend: c3e0e0dc, tx: 008e, txend: 00dc ssp-pl022 dev:ssp1: readwriter, rx: c3e0e092, rxend: c3e0e0dc, tx: 00a2, txend: 00dc ssp-pl022 dev:ssp1: readwriter, rx: c3e0e0a6, rxend: c3e0e0dc, tx: 00b6, txend: 00dc ssp-pl022 dev:ssp1: readwriter, rx: c3e0e0ba, rxend: c3e0e0dc, tx: 00ca, txend: 00dc .. However, we can get full 'spi data throughput'. Regards, Quentin On Mon, Aug 30, 2010 at 11:50 AM, Quentin YANG quentinyan...@gmail.com wrote: Hi, I am using transfer() function in spidev_test.c to verify the data throughput on phytec LPC3250 board. 2KBytes SPI message is sent out to SPI Slave device. There is a big delay (80us or so) after every 11 words transmission ( 20 us or so, which is reasonable at 8MHz SPI Clock). I am wondering where is this significant delay coming from??? == It largely reduced the SPI data througput. It does not look like 'Linux Kernel Context switch'. See attached Timing Info on Scope. (TimingOnScope.txt) SPI board setting is as follows (8MHZ spi clock, 16bit data size, interrupt transfer) static struct pl022_config_chip spi1_chip_info = { .lbm = LOOPBACK_DISABLED, .com_mode = INTERRUPT_TRANSFER, .iface = SSP_INTERFACE_MOTOROLA_SPI, .hierarchy = SSP_MASTER, .slave_tx_disable = 0, .endian_tx = SSP_TX_LSB, .endian_rx = SSP_RX_LSB, .data_size = SSP_DATA_BITS_16, //SSP_DATA_BITS_8, .rx_lev_trig = SSP_RX_4_OR_MORE_ELEM, .tx_lev_trig = SSP_TX_4_OR_MORE_EMPTY_LOC, .clk_phase = SSP_CLK_FIRST_EDGE, //SSP_CLK_SECOND_EDGE, .clk_pol = SSP_CLK_POL_IDLE_LOW, .ctrl_len = SSP_BITS_8, .wait_state = SSP_MWIRE_WAIT_ZERO, .duplex = SSP_MICROWIRE_CHANNEL_FULL_DUPLEX, .cs_control = phy3250_spi1_cs_set, }; Kernel (2.6.34) is using default 100ms context switch. ' CONFIG_HZ=100. ' Any help is appreciated. Regards, Quentin -- This SF.net Dev2Dev email is sponsored by: Show off your parallel programming skills. Enter the Intel(R) Threading Challenge 2010. http://p.sf.net/sfu/intel-thread-sfd ___ spi-devel-general mailing list spi-devel-general@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/spi-devel-general